sinatra-dm 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +169 -3
- data/Rakefile +18 -0
- data/VERSION +1 -1
- data/lib/sinatra/dm.rb +214 -71
- data/sinatra-dm.gemspec +15 -9
- data/spec/dm_bootstrap.rb +14 -0
- data/spec/sinatra/dm_mysql_spec.rb +148 -0
- data/spec/sinatra/dm_sqlite3_spec.rb +308 -0
- data/spec/spec_helper.rb +16 -40
- metadata +19 -7
- data/lib/sinatra/dm/rake.rb +0 -128
- data/spec/dm_model.rb +0 -14
- data/spec/sinatra/dm_spec.rb +0 -84
data/spec/spec_helper.rb
CHANGED
@@ -7,9 +7,10 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
7
7
|
require 'rubygems'
|
8
8
|
require 'sinatra/dm'
|
9
9
|
require 'sinatra/tests'
|
10
|
-
|
11
10
|
require 'dm-core'
|
12
11
|
|
12
|
+
ENV['RACK_ENV'] = 'test'
|
13
|
+
|
13
14
|
|
14
15
|
Spec::Runner.configure do |config|
|
15
16
|
config.include RspecHpricotMatchers
|
@@ -22,44 +23,19 @@ def fixtures_path
|
|
22
23
|
end
|
23
24
|
|
24
25
|
|
25
|
-
class MyTestApp < Sinatra::Base
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
set :database, "sqlite3://#{APP_ROOT}/db/db.test.db"
|
36
|
-
|
37
|
-
# ::DataMapper.auto_migrate!
|
38
|
-
|
39
|
-
|
40
|
-
## LOAD MODELS
|
41
|
-
require "dm_model.rb"
|
42
|
-
|
43
|
-
## Migrate only in test environments, else upgrade
|
44
|
-
# test? ? ::DataMapper.auto_migrate! : ::DataMapper.auto_upgrade!
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
## ROUTES TEST (IF DATA COMES THROUGH)
|
49
|
-
get '/db' do
|
50
|
-
@posts = Post.all
|
51
|
-
out = []
|
52
|
-
@posts.each { |p| out << p.name }
|
53
|
-
# out = @posts.map { |p| p.name }
|
54
|
-
out.join(', ')
|
55
|
-
end
|
56
|
-
|
26
|
+
# class MyTestApp < Sinatra::Base
|
27
|
+
#
|
28
|
+
# Declared in each test suite
|
29
|
+
#
|
30
|
+
# end
|
31
|
+
|
32
|
+
|
33
|
+
class Test::Unit::TestCase
|
34
|
+
include Sinatra::Tests::TestCase
|
35
|
+
Sinatra::Base.set :environment, :test
|
57
36
|
end
|
58
37
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
# ::DataMapper::Migrations.auto_upgrade!
|
64
|
-
|
65
|
-
end
|
38
|
+
|
39
|
+
### BOOTSTRAP ###
|
40
|
+
|
41
|
+
require 'dm_bootstrap.rb'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinatra-dm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kematzy
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-02-22 00:00:00 +08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -32,6 +32,16 @@ dependencies:
|
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 0.10.1
|
34
34
|
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: kematzy-tasks
|
37
|
+
type: :runtime
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 0.1.0
|
44
|
+
version:
|
35
45
|
- !ruby/object:Gem::Dependency
|
36
46
|
name: sinatra-tests
|
37
47
|
type: :development
|
@@ -59,12 +69,13 @@ files:
|
|
59
69
|
- Rakefile
|
60
70
|
- VERSION
|
61
71
|
- lib/sinatra/dm.rb
|
62
|
-
- lib/sinatra/dm/rake.rb
|
63
72
|
- sinatra-dm.gemspec
|
64
|
-
- spec/
|
73
|
+
- spec/dm_bootstrap.rb
|
65
74
|
- spec/fixtures/db/.gitignore
|
75
|
+
- spec/fixtures/db/custom/.gitignore
|
66
76
|
- spec/fixtures/log/.gitignore
|
67
|
-
- spec/sinatra/
|
77
|
+
- spec/sinatra/dm_mysql_spec.rb
|
78
|
+
- spec/sinatra/dm_sqlite3_spec.rb
|
68
79
|
- spec/spec_helper.rb
|
69
80
|
has_rdoc: true
|
70
81
|
homepage: http://github.com/kematzy/sinatra-dm
|
@@ -95,6 +106,7 @@ signing_key:
|
|
95
106
|
specification_version: 3
|
96
107
|
summary: Sinatra Extension for working with DataMapper
|
97
108
|
test_files:
|
98
|
-
- spec/
|
99
|
-
- spec/sinatra/
|
109
|
+
- spec/dm_bootstrap.rb
|
110
|
+
- spec/sinatra/dm_mysql_spec.rb
|
111
|
+
- spec/sinatra/dm_sqlite3_spec.rb
|
100
112
|
- spec/spec_helper.rb
|
data/lib/sinatra/dm/rake.rb
DELETED
@@ -1,128 +0,0 @@
|
|
1
|
-
|
2
|
-
namespace :db do
|
3
|
-
|
4
|
-
namespace :production do
|
5
|
-
|
6
|
-
desc "Convert development.db into production.db"
|
7
|
-
task :setup do
|
8
|
-
sh "cp db/development.db db/production.db"
|
9
|
-
end
|
10
|
-
end #/ namespace production
|
11
|
-
|
12
|
-
|
13
|
-
desc "Backup database to .tar.gz file (=> db:backup:db)"
|
14
|
-
task :backup => ['db:backup:db']
|
15
|
-
|
16
|
-
desc "Backups DBs into .sql files (=> db:backup:sql)"
|
17
|
-
task :backups => ['db:backup:sql']
|
18
|
-
|
19
|
-
namespace :backup do
|
20
|
-
|
21
|
-
desc "Backups DBs into .sql file"
|
22
|
-
task :sql => ['db:dump']
|
23
|
-
|
24
|
-
desc "Backups DB .db file and compresses it"
|
25
|
-
task :db, [:db] do |t, args|
|
26
|
-
unless args.db
|
27
|
-
puts %Q[\nERROR:\n\n You must define the DB variable like this:\n rake db:backup:db db=db/name-of-database.db\n\n]
|
28
|
-
else
|
29
|
-
db_name = args.db.sub(/^db\//,'')
|
30
|
-
`cd db/ && tar zcf ../db/backups/#{Time.now.strftime("%Y%d%m-%H%M%S")}-#{db_name}.tar.gz #{db_name} `
|
31
|
-
puts "\n-- created a compressed backup version of [ #{args.db} ]\n\n"
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
end #/namespace :backup
|
36
|
-
|
37
|
-
|
38
|
-
desc "Bootstrap database with .sql files (db=db/name.db)"
|
39
|
-
task :bootstrap, [:db] do |t, args|
|
40
|
-
# To put the data into a SQLite database from a sql file use:
|
41
|
-
# sqlite database < database.sql
|
42
|
-
unless args.db
|
43
|
-
msg = %Q[\nERROR:\n\n You must define the :db variable like this:\n]
|
44
|
-
msg << %Q[ rake db:bootstrap db=db/name-of-database.db\n\n]
|
45
|
-
puts msg
|
46
|
-
else
|
47
|
-
sh "sqlite3 #{args.db} < db/bootstraps/#{args.db.sub(/^db\//,'')}.sql"
|
48
|
-
puts "-- DB [ #{args.db}] bootstrapped with [ db/bootstraps/#{args.db.sub(/^db\//,'')}.sql ]l\n\n"
|
49
|
-
# if test(?d, '.git/config')
|
50
|
-
# sh "git add db/bootstraps/#{args.db.sub(/^db\//,'')}.sql"
|
51
|
-
# sh %Q{git commit -m "#{Time.now.strftime("%Y-%d-%m at %H:%M:%S")} : updated DB bootstraps for #{args.db}" }
|
52
|
-
# end
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
56
|
-
|
57
|
-
namespace :bootstrap do
|
58
|
-
|
59
|
-
desc "Bootstrap NEW DB (db=db/name.db, bf=db/bootstraps/name.sql)"
|
60
|
-
task :new, [:db, :bf] do |t, args|
|
61
|
-
unless args.db && args.bf
|
62
|
-
msg = %Q[\nERROR:\n\n You must define the DB variable like this:\n]
|
63
|
-
msg << %Q[ rake db:bootstrap:new db=db/name-of-database.db\n]
|
64
|
-
msg << %Q[ bf=db/bootstraps/name.sql \n\n]
|
65
|
-
puts msg
|
66
|
-
else
|
67
|
-
sh "sqlite3 #{args.db} < #{args.bf}"
|
68
|
-
puts "-- created new DB [ #{args.db} ]\n"
|
69
|
-
puts "-- - bootstrapped with [ #{args.bf} ]\n\n"
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
end #/namespace :bootstrap
|
74
|
-
|
75
|
-
desc "Dump database(s) to .sql file(s)"
|
76
|
-
task :dump do
|
77
|
-
# In order to dump a SQLite database you can use the following command:
|
78
|
-
# sqlite database .dump > database.sql
|
79
|
-
dump_all_dbs_and_wrap_dumps_with_comments(:backups)
|
80
|
-
puts "-- dumped all DBs into .sql files\n\n"
|
81
|
-
end
|
82
|
-
|
83
|
-
namespace :dump do
|
84
|
-
|
85
|
-
desc "Dump current database as a bootstrap .sql file"
|
86
|
-
task :bootstrap do
|
87
|
-
dump_all_dbs_and_wrap_dumps_with_comments(:bootstraps)
|
88
|
-
end
|
89
|
-
|
90
|
-
end #/ namespace :dump
|
91
|
-
|
92
|
-
end #/ namespace :db
|
93
|
-
|
94
|
-
|
95
|
-
##
|
96
|
-
# TODO: add some comments here
|
97
|
-
#
|
98
|
-
# ==== Examples
|
99
|
-
#
|
100
|
-
#
|
101
|
-
# @api private
|
102
|
-
def dump_all_dbs_and_wrap_dumps_with_comments(dump_dir = :backups )
|
103
|
-
Dir["db/*.db"].each do |db|
|
104
|
-
|
105
|
-
if dump_dir == :bootstraps
|
106
|
-
backup_file = "db/#{dump_dir}/#{File.basename(db)}.sql"
|
107
|
-
else
|
108
|
-
backup_file = "db/#{dump_dir}/#{Time.now.strftime("%Y%d%m-%H%M%S")}-#{File.basename(db)}.sql"
|
109
|
-
end
|
110
|
-
|
111
|
-
comment = %Q['-- ++++ ]
|
112
|
-
if dump_dir == :bootstraps
|
113
|
-
comment << %Q[\n-- BOOTSTRAP FILE FOR DB [ #{File.basename(db)} ] ]
|
114
|
-
else
|
115
|
-
comment << %Q[\n-- BACKUP OF DB [ #{File.basename(db)} ] ]
|
116
|
-
end
|
117
|
-
comment << %Q[\n-- IN APP [ #{File.dirname(File.expand_path(__FILE__))}/ ] ]
|
118
|
-
comment << %Q[\n-- Created on [ #{Time.now.strftime("%Y-%d-%m at %H:%M:%S")} ] ]
|
119
|
-
comment << %Q[\n-- ]
|
120
|
-
comment << %Q[\n-- /++++ \n']
|
121
|
-
|
122
|
-
`echo #{comment} > #{backup_file}`
|
123
|
-
sh "sqlite3 #{db} .dump >> #{backup_file}"
|
124
|
-
`echo '\n-- \n-- /EOF \n-- ' >> #{backup_file}`
|
125
|
-
end
|
126
|
-
|
127
|
-
end
|
128
|
-
|
data/spec/dm_model.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
class ::Post
|
2
|
-
include DataMapper::Resource
|
3
|
-
property :id, Serial
|
4
|
-
property :name, String
|
5
|
-
end #/ Post
|
6
|
-
|
7
|
-
|
8
|
-
# Post.auto_migrate!
|
9
|
-
DataMapper.auto_migrate!
|
10
|
-
|
11
|
-
|
12
|
-
Post.create!(:name => "Post1" )
|
13
|
-
Post.create!(:name => "Post2" )
|
14
|
-
Post.create!(:name => "Post3" )
|
data/spec/sinatra/dm_spec.rb
DELETED
@@ -1,84 +0,0 @@
|
|
1
|
-
|
2
|
-
require File.expand_path(File.dirname(__FILE__) + '../../spec_helper')
|
3
|
-
|
4
|
-
# dm_bootstrap
|
5
|
-
|
6
|
-
describe "Sinatra" do
|
7
|
-
|
8
|
-
describe "DM" do
|
9
|
-
|
10
|
-
before(:each) do
|
11
|
-
class ::Test::Unit::TestCase
|
12
|
-
def app; ::MyTestApp.new ; end
|
13
|
-
end
|
14
|
-
@app = app
|
15
|
-
end
|
16
|
-
|
17
|
-
after(:each) do
|
18
|
-
class ::Test::Unit::TestCase
|
19
|
-
def app; nil ; end
|
20
|
-
end
|
21
|
-
@app = nil
|
22
|
-
end
|
23
|
-
|
24
|
-
# it_should_behave_like "MyTestApp"
|
25
|
-
|
26
|
-
describe "Using Defaults" do
|
27
|
-
|
28
|
-
it "should set the correct adapter" do
|
29
|
-
MyTestApp.database.options['adapter'].should == "sqlite3"
|
30
|
-
end
|
31
|
-
|
32
|
-
it "should set the correct db path" do
|
33
|
-
MyTestApp.database.options['path'].should == "#{fixtures_path}/db/db.test.db"
|
34
|
-
end
|
35
|
-
|
36
|
-
it "should set the correct dm_logger_level" do
|
37
|
-
MyTestApp.database_logger.init_args[1].should == :debug
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should set the correct dm_logger_level" do
|
41
|
-
MyTestApp.database_logger.init_args[0].should == "#{fixtures_path}/log/dm.test.log"
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should return the data from the database" do
|
45
|
-
get("/db")
|
46
|
-
body.should == "Post1, Post2, Post3"
|
47
|
-
end
|
48
|
-
|
49
|
-
end #/ Using Defaults
|
50
|
-
|
51
|
-
describe "Using Custom Settings" do
|
52
|
-
|
53
|
-
class MySQLTestApp < Sinatra::Base
|
54
|
-
register(Sinatra::DataMapperExtension)
|
55
|
-
|
56
|
-
# NOTE:: :dm_logger_level & :dm_logger_path must be set before :database
|
57
|
-
# in order to use custom settings
|
58
|
-
set :dm_logger_level, :info
|
59
|
-
set :dm_logger_path, "#{::APP_ROOT}/log/dm.custom.log"
|
60
|
-
|
61
|
-
set :database, 'mysql://localhost/the_database_name'
|
62
|
-
end
|
63
|
-
|
64
|
-
it "should set the correct adapter" do
|
65
|
-
MySQLTestApp.database.options['adapter'].should == "mysql"
|
66
|
-
end
|
67
|
-
|
68
|
-
it "should set the correct db path" do
|
69
|
-
MySQLTestApp.database.options['path'].should == "/the_database_name"
|
70
|
-
end
|
71
|
-
|
72
|
-
it "should set the correct dm_logger_level" do
|
73
|
-
MySQLTestApp.database_logger.init_args[1].should == :info
|
74
|
-
end
|
75
|
-
|
76
|
-
it "should set the correct dm_logger_level" do
|
77
|
-
MySQLTestApp.database_logger.init_args[0].should == "#{fixtures_path}/log/dm.custom.log"
|
78
|
-
end
|
79
|
-
|
80
|
-
end #/ Using Custom Settings
|
81
|
-
|
82
|
-
|
83
|
-
end #/ DM
|
84
|
-
end #/ Sinatra
|