sinatra-dm 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/sinatra/dm.rb +47 -21
- data/lib/sinatra/dm/rake.rb +111 -1
- data/sinatra-dm.gemspec +64 -0
- metadata +2 -1
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/lib/sinatra/dm.rb
CHANGED
@@ -15,7 +15,7 @@ module Sinatra
|
|
15
15
|
#
|
16
16
|
module DataMapperExtension
|
17
17
|
|
18
|
-
VERSION = '0.1.
|
18
|
+
VERSION = '0.1.1' unless const_defined?(:VERSION)
|
19
19
|
def self.version; "Sinatra::DataMapperExtension v#{VERSION}"; end
|
20
20
|
|
21
21
|
module Helpers
|
@@ -31,26 +31,9 @@ module Sinatra
|
|
31
31
|
options.database
|
32
32
|
end
|
33
33
|
|
34
|
-
|
35
34
|
end #/ Helpers
|
36
35
|
|
37
36
|
|
38
|
-
##
|
39
|
-
# TODO: add some comments here
|
40
|
-
#
|
41
|
-
# ==== Examples
|
42
|
-
#
|
43
|
-
#
|
44
|
-
# @api public
|
45
|
-
# def database_migrate!(type = :upgrade)
|
46
|
-
# case type
|
47
|
-
# when :migrate
|
48
|
-
# ::DataMapper.auto_upgrade!
|
49
|
-
# else
|
50
|
-
# ::DataMapper.auto_upgrade!
|
51
|
-
# end
|
52
|
-
# end
|
53
|
-
|
54
37
|
##
|
55
38
|
# TODO: add some comments here
|
56
39
|
#
|
@@ -63,6 +46,7 @@ module Sinatra
|
|
63
46
|
# @database = nil
|
64
47
|
set :dm_setup_context, context
|
65
48
|
set :database_url, url
|
49
|
+
puts "-- Initiated DataMapper DB [#{database_url.sub(::APP_ROOT, '...')}]"
|
66
50
|
database_logger
|
67
51
|
database
|
68
52
|
end
|
@@ -94,10 +78,26 @@ module Sinatra
|
|
94
78
|
@database_logger ||= ::DataMapper::Logger.new(dm_logger_path, dm_logger_level)
|
95
79
|
end
|
96
80
|
|
81
|
+
## TODO: Should support real migrations,
|
82
|
+
|
83
|
+
##
|
84
|
+
# TODO: add some comments here
|
85
|
+
#
|
86
|
+
# ==== Examples
|
87
|
+
#
|
88
|
+
#
|
89
|
+
# @api public
|
90
|
+
# def database_migrate!(type = :upgrade)
|
91
|
+
# case type
|
92
|
+
# when :migrate
|
93
|
+
# ::DataMapper.auto_upgrade!
|
94
|
+
# else
|
95
|
+
# ::DataMapper.auto_upgrade!
|
96
|
+
# end
|
97
|
+
# end
|
98
|
+
|
97
99
|
##
|
98
|
-
# TODO:
|
99
|
-
# but for now, just a quick check between upgrade! or migrate!
|
100
|
-
# based upon status.
|
100
|
+
# TODO: add some comments here
|
101
101
|
#
|
102
102
|
# ==== Examples
|
103
103
|
#
|
@@ -147,6 +147,32 @@ module Sinatra
|
|
147
147
|
|
148
148
|
app.helpers DataMapperExtension::Helpers
|
149
149
|
|
150
|
+
# QUESTION:: Should this actually be here?
|
151
|
+
# or should I just use the rake tasks
|
152
|
+
#
|
153
|
+
if app.development?
|
154
|
+
app.get '/install/db/bootstrap' do
|
155
|
+
out = ""
|
156
|
+
Dir["#{::APP_ROOT}/db/bootstraps/*.sql"].each do |b|
|
157
|
+
db = self.class.database_url.sub('sqlite3://','')
|
158
|
+
`sqlite3 #{db} < #{b}`
|
159
|
+
out << "\t\t<li> -- #{b.sub(::APP_ROOT,'..')} loaded</li>\n"
|
160
|
+
end
|
161
|
+
|
162
|
+
html = %Q[<div id="main-content">\n]
|
163
|
+
html << %Q[\t<h2>Install :: Database Bootstrapping</h2>\n]
|
164
|
+
html << %Q[\t<p>Loading bootstraps from [ #{::APP_ROOT}/db/bootstraps/ ]</p>\n]
|
165
|
+
html << %Q[\t<ul>\n]
|
166
|
+
html << out
|
167
|
+
html << %Q[\t</ul>\n]
|
168
|
+
html << %Q[\t<p>Bootstrapping finished.</p>\n]
|
169
|
+
html << %Q[\t<p><a href="javascript:history.go(-1);">Go Back</a></p>\n]
|
170
|
+
html << %Q[</div>\n]
|
171
|
+
|
172
|
+
erb(html)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
150
176
|
end #/ self.registered
|
151
177
|
|
152
178
|
end #/ DataMapperExtension
|
data/lib/sinatra/dm/rake.rb
CHANGED
@@ -1,5 +1,115 @@
|
|
1
|
-
# TODO:: Need to add this code here....
|
2
1
|
|
3
2
|
namespace :db do
|
4
3
|
|
4
|
+
desc "Backup database to .tar.gz file (=> db:backup:db)"
|
5
|
+
task :backup => ['db:backup:db']
|
6
|
+
|
7
|
+
desc "Backups DBs into .sql files (=> db:backup:sql)"
|
8
|
+
task :backups => ['db:backup:sql']
|
9
|
+
|
10
|
+
namespace :backup do
|
11
|
+
|
12
|
+
desc "Backups DBs into .sql file"
|
13
|
+
task :sql => ['db:dump']
|
14
|
+
|
15
|
+
desc "Backups DB .db file and compresses it"
|
16
|
+
task :db, [:db] do |t, args|
|
17
|
+
unless args.db
|
18
|
+
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]
|
19
|
+
else
|
20
|
+
db_name = args.db.sub(/^db\//,'')
|
21
|
+
`cd db/ && tar zcf ../db/backups/#{Time.now.strftime("%Y%d%m-%H%M%S")}-#{db_name}.tar.gz #{db_name} `
|
22
|
+
puts "\n-- created a compressed backup version of [ #{args.db} ]\n\n"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end #/namespace :backup
|
27
|
+
|
28
|
+
|
29
|
+
desc "Bootstrap database with .sql files (db=db/name.db)"
|
30
|
+
task :bootstrap, [:db] do |t, args|
|
31
|
+
# To put the data into a SQLite database from a sql file use:
|
32
|
+
# sqlite database < database.sql
|
33
|
+
unless args.db
|
34
|
+
msg = %Q[\nERROR:\n\n You must define the :db variable like this:\n]
|
35
|
+
msg << %Q[ rake db:bootstrap db=db/name-of-database.db\n\n]
|
36
|
+
puts mgs
|
37
|
+
else
|
38
|
+
sh "sqlite3 #{args.db} < db/bootstraps/#{args.db.sub(/^db\//,'')}.sql"
|
39
|
+
puts "-- DB [ #{args.db}] bootstrapped with [ db/bootstraps/#{args.db.sub(/^db\//,'')}.sql ]l\n\n"
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
namespace :bootstrap do
|
45
|
+
|
46
|
+
desc "Bootstrap NEW DB (db=db/name.db, bf=db/bootstraps/name.sql)"
|
47
|
+
task :new, [:db, :bf] do |t, args|
|
48
|
+
unless args.db && args.bf
|
49
|
+
msg = %Q[\nERROR:\n\n You must define the DB variable like this:\n]
|
50
|
+
msg << %Q[ rake db:bootstrap:new db=db/name-of-database.db\n]
|
51
|
+
msg << %Q[ bf=db/bootstraps/name.sql \n\n]
|
52
|
+
puts mgs
|
53
|
+
else
|
54
|
+
sh "sqlite3 #{args.db} < #{args.bf}"
|
55
|
+
puts "-- created new DB [ #{args.db} ]\n"
|
56
|
+
puts "-- - bootstrapped with [ #{args.bf} ]\n\n"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
end #/namespace :bootstrap
|
61
|
+
|
62
|
+
desc "Dump database(s) to .sql file(s)"
|
63
|
+
task :dump do
|
64
|
+
# In order to dump a SQLite database you can use the following command:
|
65
|
+
# sqlite database .dump > database.sql
|
66
|
+
dump_all_dbs_and_wrap_dumps_with_comments(:backups)
|
67
|
+
puts "-- dumped all DBs into .sql files\n\n"
|
68
|
+
end
|
69
|
+
|
70
|
+
namespace :dump do
|
71
|
+
|
72
|
+
desc "Dump current database as a bootstrap .sql file"
|
73
|
+
task :bootstrap do
|
74
|
+
dump_all_dbs_and_wrap_dumps_with_comments(:bootstraps)
|
75
|
+
end
|
76
|
+
|
77
|
+
end #/ namespace :dump
|
78
|
+
|
79
|
+
end #/ namespace :db
|
80
|
+
|
81
|
+
|
82
|
+
##
|
83
|
+
# TODO: add some comments here
|
84
|
+
#
|
85
|
+
# ==== Examples
|
86
|
+
#
|
87
|
+
#
|
88
|
+
# @api private
|
89
|
+
def dump_all_dbs_and_wrap_dumps_with_comments(dump_dir = :backups )
|
90
|
+
Dir["db/*.db"].each do |db|
|
91
|
+
|
92
|
+
if dump_dir == :bootstraps
|
93
|
+
backup_file = "db/#{dump_dir}/#{File.basename(db)}.sql"
|
94
|
+
else
|
95
|
+
backup_file = "db/#{dump_dir}/#{Time.now.strftime("%Y%d%m-%H%M%S")}-#{File.basename(db)}.sql"
|
96
|
+
end
|
97
|
+
|
98
|
+
comment = %Q['-- ++++ ]
|
99
|
+
if dump_dir == :bootstraps
|
100
|
+
comment << %Q[\n-- BOOTSTRAP FILE FOR DB [ #{File.basename(db)} ] ]
|
101
|
+
else
|
102
|
+
comment << %Q[\n-- BACKUP OF DB [ #{File.basename(db)} ] ]
|
103
|
+
end
|
104
|
+
comment << %Q[\n-- IN APP [ #{File.dirname(File.expand_path(__FILE__))}/ ] ]
|
105
|
+
comment << %Q[\n-- Created on [ #{Time.now.strftime("%Y-%d-%m at %H:%M:%S")} ] ]
|
106
|
+
comment << %Q[\n-- ]
|
107
|
+
comment << %Q[\n-- /++++ \n']
|
108
|
+
|
109
|
+
`echo #{comment} > #{backup_file}`
|
110
|
+
sh "sqlite3 #{db} .dump >> #{backup_file}"
|
111
|
+
`echo '\n-- \n-- /EOF \n-- ' >> #{backup_file}`
|
112
|
+
end
|
113
|
+
|
5
114
|
end
|
115
|
+
|
data/sinatra-dm.gemspec
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{sinatra-dm}
|
8
|
+
s.version = "0.1.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["kematzy"]
|
12
|
+
s.date = %q{2009-10-14}
|
13
|
+
s.description = %q{Sinatra Extension for working with DataMapper (another Sinatra-Sequel Rip-off)}
|
14
|
+
s.email = %q{kematzy@gmail.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".gitignore",
|
22
|
+
"LICENSE",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"lib/sinatra/dm.rb",
|
27
|
+
"lib/sinatra/dm/rake.rb",
|
28
|
+
"sinatra-dm.gemspec",
|
29
|
+
"spec/dm_model.rb",
|
30
|
+
"spec/fixtures/db/.gitignore",
|
31
|
+
"spec/fixtures/log/.gitignore",
|
32
|
+
"spec/sinatra/dm_spec.rb",
|
33
|
+
"spec/spec_helper.rb"
|
34
|
+
]
|
35
|
+
s.homepage = %q{http://github.com/kematzy/sinatra-dm}
|
36
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
37
|
+
s.require_paths = ["lib"]
|
38
|
+
s.rubygems_version = %q{1.3.5}
|
39
|
+
s.summary = %q{Sinatra Extension for working with DataMapper}
|
40
|
+
s.test_files = [
|
41
|
+
"spec/dm_model.rb",
|
42
|
+
"spec/sinatra/dm_spec.rb",
|
43
|
+
"spec/spec_helper.rb"
|
44
|
+
]
|
45
|
+
|
46
|
+
if s.respond_to? :specification_version then
|
47
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
48
|
+
s.specification_version = 3
|
49
|
+
|
50
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
51
|
+
s.add_runtime_dependency(%q<sinatra>, [">= 0.10.1"])
|
52
|
+
s.add_runtime_dependency(%q<dm-core>, [">= 0.10.1"])
|
53
|
+
s.add_development_dependency(%q<sinatra-tests>, [">= 0.1.5"])
|
54
|
+
else
|
55
|
+
s.add_dependency(%q<sinatra>, [">= 0.10.1"])
|
56
|
+
s.add_dependency(%q<dm-core>, [">= 0.10.1"])
|
57
|
+
s.add_dependency(%q<sinatra-tests>, [">= 0.1.5"])
|
58
|
+
end
|
59
|
+
else
|
60
|
+
s.add_dependency(%q<sinatra>, [">= 0.10.1"])
|
61
|
+
s.add_dependency(%q<dm-core>, [">= 0.10.1"])
|
62
|
+
s.add_dependency(%q<sinatra-tests>, [">= 0.1.5"])
|
63
|
+
end
|
64
|
+
end
|
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.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kematzy
|
@@ -60,6 +60,7 @@ files:
|
|
60
60
|
- VERSION
|
61
61
|
- lib/sinatra/dm.rb
|
62
62
|
- lib/sinatra/dm/rake.rb
|
63
|
+
- sinatra-dm.gemspec
|
63
64
|
- spec/dm_model.rb
|
64
65
|
- spec/fixtures/db/.gitignore
|
65
66
|
- spec/fixtures/log/.gitignore
|