sinatra-dm 0.1.0 → 0.1.1
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/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
|