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 CHANGED
@@ -1 +1 @@
1
- 0.1.0
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.0' unless const_defined?(:VERSION)
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: Should support real migrations,
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
@@ -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
+
@@ -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.0
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