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 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