merb_activerecord 0.4.3 → 0.5

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -3,7 +3,7 @@ require 'rake/gempackagetask'
3
3
 
4
4
  PLUGIN = "merb_activerecord"
5
5
  NAME = "merb_activerecord"
6
- VERSION = "0.4.3"
6
+ VERSION = "0.5"
7
7
  AUTHOR = "Duane Johnson"
8
8
  EMAIL = "canadaduane@gmail.com"
9
9
  HOMEPAGE = "http://merbivore.com"
@@ -20,7 +20,7 @@ spec = Gem::Specification.new do |s|
20
20
  s.author = AUTHOR
21
21
  s.email = EMAIL
22
22
  s.homepage = HOMEPAGE
23
- s.add_dependency('merb', '>= 0.4.0')
23
+ s.add_dependency('merb', '>= 0.5')
24
24
  s.require_path = 'lib'
25
25
  s.autorequire = PLUGIN
26
26
  s.files = %w(LICENSE README Rakefile TODO) + Dir.glob("{lib,specs,activerecord_generators}/**/*")
@@ -34,3 +34,7 @@ task :install do
34
34
  sh %{rake package}
35
35
  sh %{sudo gem install pkg/#{NAME}-#{VERSION}}
36
36
  end
37
+
38
+ task :release => :package do
39
+ sh %{rubyforge add_release merb #{PLUGIN} #{VERSION} pkg/#{NAME}-#{VERSION}.gem}
40
+ end
@@ -5,8 +5,8 @@ module Merb
5
5
  module Orms
6
6
  module ActiveRecord
7
7
  class << self
8
- def config_file() MERB_ROOT / "config" / "database.yml" end
9
- def sample_dest() MERB_ROOT / "config" / "database.sample.yml" end
8
+ def config_file() Merb.root / "config" / "database.yml" end
9
+ def sample_dest() Merb.root / "config" / "database.sample.yml" end
10
10
  def sample_source() File.dirname(__FILE__) / "database.sample.yml" end
11
11
 
12
12
  def copy_sample_config
@@ -19,7 +19,7 @@ module Merb
19
19
  # Convert string keys to symbols
20
20
  full_config = Erubis.load_yaml_file(config_file)
21
21
  config = (Merb::Plugins.config[:merb_active_record] = {})
22
- (full_config[MERB_ENV.to_sym] || full_config[MERB_ENV]).each { |k, v| config[k.to_sym] = v }
22
+ (full_config[Merb.environment.to_sym] || full_config[Merb.environment]).each { |k, v| config[k.to_sym] = v }
23
23
  ::ActiveRecord::Base.configurations= full_config
24
24
  config
25
25
  end
@@ -33,11 +33,11 @@ module Merb
33
33
  Thread.new{ loop{ sleep(60*60); ::ActiveRecord::Base.verify_active_connections! } }.priority = -10
34
34
 
35
35
  ::ActiveRecord::Base.verification_timeout = 14400
36
- ::ActiveRecord::Base.logger = MERB_LOGGER
36
+ ::ActiveRecord::Base.logger = Merb.logger
37
37
  ::ActiveRecord::Base.establish_connection config
38
38
  else
39
39
  copy_sample_config
40
- puts "No database.yml file found in #{MERB_ROOT}/config."
40
+ puts "No database.yml file found in #{Merb.root}/config."
41
41
  puts "A sample file was created called database.sample.yml for you to copy and edit."
42
42
  exit(1)
43
43
  end
@@ -46,7 +46,7 @@ module Merb
46
46
  # Registering this ORM lets the user choose active_record as a session
47
47
  # in merb.yml's session_store: option.
48
48
  def register_session_type
49
- Merb::Server.register_session_type("active_record",
49
+ Merb::BootLoader.register_session_type("activerecord",
50
50
  "merb/session/active_record_session",
51
51
  "Using ActiveRecord database sessions")
52
52
  end
@@ -1,5 +1,5 @@
1
1
  task :environment do
2
- MERB_ENV = ( ENV['MERB_ENV'] || MERB_ENV ).to_sym
2
+ Merb.environment = ( ENV['Merb.environment'] || Merb.environment ).to_sym
3
3
  end
4
4
 
5
5
  namespace :db do
@@ -12,9 +12,9 @@ namespace :db do
12
12
  end
13
13
  end
14
14
 
15
- desc 'Create the local database defined in config/database.yml for the current MERB_ENV'
15
+ desc 'Create the local database defined in config/database.yml for the current Merb.environment'
16
16
  task :create => :environment do
17
- create_local_database(ActiveRecord::Base.configurations[MERB_ENV])
17
+ create_local_database(ActiveRecord::Base.configurations[Merb.environment])
18
18
  end
19
19
 
20
20
  def create_local_database(config)
@@ -53,13 +53,13 @@ namespace :db do
53
53
 
54
54
  desc 'Drops the database for the current environment'
55
55
  task :drop => :environment do
56
- config = ActiveRecord::Base.configurations[MERB_ENV || :development]
56
+ config = ActiveRecord::Base.configurations[Merb.environment || :development]
57
57
  p config
58
58
  case config[:adapter]
59
59
  when 'mysql'
60
60
  ActiveRecord::Base.connection.drop_database config[:database]
61
61
  when /^sqlite/
62
- FileUtils.rm_f File.join(MERB_ROOT, config[:database])
62
+ FileUtils.rm_f File.join(Merb.root, config[:database])
63
63
  when 'postgresql'
64
64
  `dropdb "#{config[:database]}"`
65
65
  end
@@ -76,7 +76,7 @@ namespace :db do
76
76
 
77
77
  # desc "Retrieves the charset for the current environment's database"
78
78
  # task :charset => :environment do
79
- # config = ActiveRecord::Base.configurations[MERB_ENV || :development]
79
+ # config = ActiveRecord::Base.configurations[Merb.environment || :development]
80
80
  # case config[:adapter]
81
81
  # when 'mysql'
82
82
  # ActiveRecord::Base.establish_connection(config)
@@ -88,7 +88,7 @@ namespace :db do
88
88
 
89
89
  # desc "Retrieves the collation for the current environment's database"
90
90
  # task :collation => :environment do
91
- # config = ActiveRecord::Base.configurations[MERB_ENV || :development]
91
+ # config = ActiveRecord::Base.configurations[Merb.environment || :development]
92
92
  # case config[:adapter]
93
93
  # when 'mysql'
94
94
  # ActiveRecord::Base.establish_connection(config)
@@ -107,61 +107,61 @@ namespace :db do
107
107
  desc "Load fixtures into the current environment's database. Load specific fixtures using FIXTURES=x,y"
108
108
  task :load => :environment do
109
109
  require 'active_record/fixtures'
110
- ActiveRecord::Base.establish_connection(MERB_ENV.to_sym)
111
- (ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/) : Dir.glob(File.join(MERB_ROOT, 'test', 'fixtures', '*.{yml,csv}'))).each do |fixture_file|
110
+ ActiveRecord::Base.establish_connection(Merb.environment.to_sym)
111
+ (ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/) : Dir.glob(File.join(Merb.root, 'test', 'fixtures', '*.{yml,csv}'))).each do |fixture_file|
112
112
  Fixtures.create_fixtures('test/fixtures', File.basename(fixture_file, '.*'))
113
113
  end
114
114
  end
115
115
  end
116
116
 
117
117
  namespace :schema do
118
- desc "Create a schema/schema.rb file that can be portably used against any DB supported by AR"
119
- task :dump => :environment do
118
+ desc 'Create a schema/schema.rb file that can be portably used against any DB supported by AR'
119
+ task :dump do
120
120
  require 'active_record/schema_dumper'
121
121
  File.open(ENV['SCHEMA'] || "schema/schema.rb", "w") do |file|
122
122
  ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
123
123
  end
124
124
  end
125
-
125
+
126
126
  desc "Load a schema.rb file into the database"
127
- task :load => :environment do
127
+ task :load do
128
128
  file = ENV['SCHEMA'] || "schema/schema.rb"
129
129
  load(file)
130
130
  end
131
131
  end
132
132
 
133
- namespace :structure do
133
+ namespace :structure do
134
134
  desc "Dump the database structure to a SQL file"
135
- task :dump => :environment do
136
- abcs = ActiveRecord::Base.configurations
137
- case abcs[MERB_ENV][:adapter]
138
- when "mysql", "oci", "oracle"
139
- ActiveRecord::Base.establish_connection(abcs[MERB_ENV])
140
- File.open("schema/#{MERB_ENV}_structure.sql", "w+") { |f| f << ActiveRecord::Base.connection.structure_dump }
141
- when "postgresql"
142
- ENV['PGHOST'] = abcs[MERB_ENV]["host"] if abcs[MERB_ENV]["host"]
143
- ENV['PGPORT'] = abcs[MERB_ENV]["port"].to_s if abcs[MERB_ENV]["port"]
144
- ENV['PGPASSWORD'] = abcs[MERB_ENV]["password"].to_s if abcs[MERB_ENV]["password"]
145
- search_path = abcs[MERB_ENV]["schema_search_path"]
146
- search_path = "--schema=#{search_path}" if search_path
147
- `pg_dump -i -U "#{abcs[MERB_ENV]["username"]}" -s -x -O -f schema/#{MERB_ENV}_structure.sql #{search_path} #{abcs[MERB_ENV]["database"]}`
148
- raise "Error dumping database" if $?.exitstatus == 1
149
- when "sqlite", "sqlite3"
150
- dbfile = abcs[MERB_ENV]["database"] || abcs[MERB_ENV]["dbfile"]
151
- `#{abcs[MERB_ENV]["adapter"]} #{dbfile} .schema > schema/#{MERB_ENV}_structure.sql`
152
- when "sqlserver"
153
- `scptxfr /s #{abcs[MERB_ENV]["host"]} /d #{abcs[MERB_ENV]["database"]} /I /f db\\#{MERB_ENV}_structure.sql /q /A /r`
154
- `scptxfr /s #{abcs[MERB_ENV]["host"]} /d #{abcs[MERB_ENV]["database"]} /I /F db\ /q /A /r`
155
- when "firebird"
156
- set_firebird_env(abcs[MERB_ENV])
157
- db_string = firebird_db_string(abcs[MERB_ENV])
158
- sh "isql -a #{db_string} > schema/#{MERB_ENV}_structure.sql"
159
- else
160
- raise "Task not supported by '#{abcs[MERB_ENV][:adapter]}'"
135
+ task :dump do
136
+ config = ActiveRecord::Base.configurations[Merb.environment.to_sym]
137
+ case config[:adapter]
138
+ when "mysql", "oci", "oracle"
139
+ ActiveRecord::Base.establish_connection(config[Merb.environment])
140
+ File.open("schema/#{Merb.environment}_structure.sql", "w+") { |f| f << ActiveRecord::Base.connection.structure_dump }
141
+ when "postgresql"
142
+ ENV['PGHOST'] = config[:host] if config[:host]
143
+ ENV['PGPORT'] = config[:port].to_s if config[:port]
144
+ ENV['PGPASSWORD'] = config[:password].to_s if config[:password]
145
+ search_path = config[:schema_search_path]
146
+ search_path = "--schema=#{search_path}" if search_path
147
+ `pg_dump -i -U "#{config[:username]}" -s -x -O -f schema/#{Merb.environment}_structure.sql #{search_path} #{config[:database]}`
148
+ raise "Error dumping database" if $?.exitstatus == 1
149
+ when "sqlite", "sqlite3"
150
+ dbfile = config[:database] || config[:dbfile]
151
+ `#{config[:adapter]} #{dbfile} .schema > schema/#{Merb.environment}_structure.sql`
152
+ when "sqlserver"
153
+ `scptxfr /s #{config[:host]} /d #{config[:database]} /I /f schema\\#{Merb.environment}_structure.sql /q /A /r`
154
+ `scptxfr /s #{config[:host]} /d #{config[:database]} /I /F schema\ /q /A /r`
155
+ when "firebird"
156
+ set_firebird_env(config[Merb.environment])
157
+ db_string = firebird_db_string(config[Merb.environment])
158
+ sh "isql -a #{db_string} > schema/#{Merb.environment}_structure.sql"
159
+ else
160
+ raise "Task not supported by '#{config[:adapter]}'"
161
161
  end
162
162
 
163
163
  if ActiveRecord::Base.connection.supports_migrations?
164
- File.open("schema/#{MERB_ENV}_structure.sql", "a") { |f| f << ActiveRecord::Base.connection.dump_schema_information }
164
+ File.open("schema/#{Merb.environment}_structure.sql", "a") { |f| f << ActiveRecord::Base.connection.dump_schema_information }
165
165
  end
166
166
  end
167
167
  end
@@ -169,84 +169,78 @@ namespace :db do
169
169
  namespace :test do
170
170
  desc "Recreate the test database from the current environment's database schema"
171
171
  task :clone => %w(db:schema:dump db:test:purge) do
172
- ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations['test'])
172
+ ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations[:test])
173
173
  ActiveRecord::Schema.verbose = false
174
174
  Rake::Task["db:schema:load"].invoke
175
175
  end
176
176
 
177
-
178
177
  desc "Recreate the test databases from the development structure"
179
178
  task :clone_structure => [ "db:structure:dump", "db:test:purge" ] do
180
- abcs = ActiveRecord::Base.configurations
181
- case abcs["test"]["adapter"]
182
- when "mysql"
183
- ActiveRecord::Base.establish_connection(:test)
184
- ActiveRecord::Base.connection.execute('SET foreign_key_checks = 0')
185
- IO.readlines("schema/#{MERB_ENV}_structure.sql").join.split("\n\n").each do |table|
186
- ActiveRecord::Base.connection.execute(table)
187
- end
188
- when "postgresql"
189
- ENV['PGHOST'] = abcs["test"]["host"] if abcs["test"]["host"]
190
- ENV['PGPORT'] = abcs["test"]["port"].to_s if abcs["test"]["port"]
191
- ENV['PGPASSWORD'] = abcs["test"]["password"].to_s if abcs["test"]["password"]
192
- `psql -U "#{abcs["test"]["username"]}" -f schema/#{MERB_ENV}_structure.sql #{abcs["test"]["database"]}`
193
- when "sqlite", "sqlite3"
194
- dbfile = abcs["test"]["database"] || abcs["test"]["dbfile"]
195
- `#{abcs["test"]["adapter"]} #{dbfile} < schema/#{MERB_ENV}_structure.sql`
196
- when "sqlserver"
197
- `osql -E -S #{abcs["test"]["host"]} -d #{abcs["test"]["database"]} -i db\\#{MERB_ENV}_structure.sql`
198
- when "oci", "oracle"
199
- ActiveRecord::Base.establish_connection(:test)
200
- IO.readlines("schema/#{MERB_ENV}_structure.sql").join.split(";\n\n").each do |ddl|
201
- ActiveRecord::Base.connection.execute(ddl)
202
- end
203
- when "firebird"
204
- set_firebird_env(abcs["test"])
205
- db_string = firebird_db_string(abcs["test"])
206
- sh "isql -i schema/#{MERB_ENV}_structure.sql #{db_string}"
207
- else
208
- raise "Task not supported by '#{abcs["test"]["adapter"]}'"
179
+ config = ActiveRecord::Base.configurations[:test]
180
+ case config[:adapter]
181
+ when "mysql"
182
+ ActiveRecord::Base.establish_connection(:test)
183
+ ActiveRecord::Base.connection.execute('SET foreign_key_checks = 0')
184
+ IO.readlines("schema/#{Merb.environment}_structure.sql").join.split("\n\n").each do |table|
185
+ ActiveRecord::Base.connection.execute(table)
186
+ end
187
+ when "postgresql"
188
+ ENV['PGHOST'] = config[:host] if config[:host]
189
+ ENV['PGPORT'] = config[:port].to_s if config[:port]
190
+ ENV['PGPASSWORD'] = config[:password].to_s if config[:password]
191
+ `psql -U "#{config[:username]}" -f schema/#{Merb.environment}_structure.sql #{config[:database]}`
192
+ when "sqlite", "sqlite3"
193
+ dbfile = config[:database] ||config[:dbfile]
194
+ `#{config[:adapter]} #{dbfile} < schema/#{Merb.environment}_structure.sql`
195
+ when "sqlserver"
196
+ `osql -E -S #{config[:host]} -d #{config[:database]} -i schema\\#{Merb.environment}_structure.sql`
197
+ when "oci", "oracle"
198
+ ActiveRecord::Base.establish_connection(:test)
199
+ IO.readlines("schema/#{Merb.environment}_structure.sql").join.split(";\n\n").each do |ddl|
200
+ ActiveRecord::Base.connection.execute(ddl)
201
+ end
202
+ when "firebird"
203
+ set_firebird_env(config)
204
+ db_string = firebird_db_string(config)
205
+ sh "isql -i schema/#{Merb.environment}_structure.sql #{db_string}"
206
+ else
207
+ raise "Task not supported by '#{config[:adapter]}'"
209
208
  end
210
209
  end
211
-
210
+
212
211
  desc "Empty the test database"
213
- task :purge => :environment do
214
- abcs = ActiveRecord::Base.configurations
215
- case abcs["test"]["adapter"]
216
- when "mysql"
217
- ActiveRecord::Base.establish_connection(:test)
218
- ActiveRecord::Base.connection.recreate_database(abcs["test"]["database"])
219
- when "postgresql"
220
- ENV['PGHOST'] = abcs["test"]["host"] if abcs["test"]["host"]
221
- ENV['PGPORT'] = abcs["test"]["port"].to_s if abcs["test"]["port"]
222
- ENV['PGPASSWORD'] = abcs["test"]["password"].to_s if abcs["test"]["password"]
223
- enc_option = "-E #{abcs["test"]["encoding"]}" if abcs["test"]["encoding"]
224
-
225
- ActiveRecord::Base.clear_active_connections!
226
- `dropdb -U "#{abcs["test"]["username"]}" #{abcs["test"]["database"]}`
227
- `createdb #{enc_option} -U "#{abcs["test"]["username"]}" #{abcs["test"]["database"]}`
228
- when "sqlite","sqlite3"
229
- dbfile = abcs["test"]["database"] || abcs["test"]["dbfile"]
230
- File.delete(dbfile) if File.exist?(dbfile)
231
- when "sqlserver"
232
- dropfkscript = "#{abcs["test"]["host"]}.#{abcs["test"]["database"]}.DP1".gsub(/\\/,'-')
233
- `osql -E -S #{abcs["test"]["host"]} -d #{abcs["test"]["database"]} -i db\\#{dropfkscript}`
234
- `osql -E -S #{abcs["test"]["host"]} -d #{abcs["test"]["database"]} -i db\\#{MERB_ENV}_structure.sql`
235
- when "oci", "oracle"
236
- ActiveRecord::Base.establish_connection(:test)
237
- ActiveRecord::Base.connection.structure_drop.split(";\n\n").each do |ddl|
238
- ActiveRecord::Base.connection.execute(ddl)
239
- end
240
- when "firebird"
241
- ActiveRecord::Base.establish_connection(:test)
242
- ActiveRecord::Base.connection.recreate_database!
243
- else
244
- raise "Task not supported by '#{abcs["test"]["adapter"]}'"
212
+ task :purge do
213
+ config = ActiveRecord::Base.configurations[:test]
214
+ case config[:adapter]
215
+ when "mysql"
216
+ ActiveRecord::Base.establish_connection(:test)
217
+ ActiveRecord::Base.connection.recreate_database(config[:database])
218
+ when "postgresql"
219
+ ENV['PGHOST'] = config[:host] if config[:host]
220
+ ENV['PGPORT'] = configs[:port].to_s if config[:port]
221
+ ENV['PGPASSWORD'] = configs[:password].to_s if config[:password]
222
+ enc_option = "-E #{config[:encoding]}" if config[:encoding]
223
+ ActiveRecord::Base.clear_active_connections!
224
+ `dropdb -U "#{config[:username]}" #{config[:database]}`
225
+ `createdb #{enc_option} -U "#{config[:username]}" #{config[:database]}`
226
+ when "sqlite","sqlite3"
227
+ dbfile = config[:database] || config[:dbfile]
228
+ File.delete(dbfile) if File.exist?(dbfile)
229
+ when "sqlserver"
230
+ config ActiveRecord::Base.establish_connection(:test)
231
+ ActiveRecord::Base.connection.structure_drop.split(";\n\n").each do |ddl|
232
+ ActiveRecord::Base.connection.execute(ddl)
233
+ end
234
+ when "firebird"
235
+ ActiveRecord::Base.establish_connection(:test)
236
+ ActiveRecord::Base.connection.recreate_database!
237
+ else
238
+ raise "Task not supported by '#{config[:adapter]}'"
245
239
  end
246
240
  end
247
241
 
248
- desc 'Prepare the test database and load the schema'
249
- task :prepare => :environment do
242
+ desc "Prepare the test database and load the schema"
243
+ task :prepare => ["db:test:clone_structure", "db:test:clone"] do
250
244
  if defined?(ActiveRecord::Base) && !ActiveRecord::Base.configurations.blank?
251
245
  Rake::Task[{ :sql => "db:test:clone_structure", :ruby => "db:test:clone" }[ActiveRecord::Base.schema_format]].invoke
252
246
  end
@@ -1,9 +1,9 @@
1
- require 'active_record'
1
+ require "active_record"
2
2
 
3
3
  module Merb
4
4
  module SessionMixin
5
5
  def setup_session
6
- MERB_LOGGER.info("Setting up session")
6
+ Merb.logger.info("Setting up session")
7
7
  before = cookies[_session_id_key]
8
8
  request.session, cookies[_session_id_key] = Merb::ActiveRecordSession.persist(cookies[_session_id_key])
9
9
  @_fingerprint = Marshal.dump(request.session.data).hash
@@ -11,7 +11,7 @@ module Merb
11
11
  end
12
12
 
13
13
  def finalize_session
14
- MERB_LOGGER.info("Finalize session")
14
+ Merb.logger.info("Finalize session")
15
15
  request.session.save if @_fingerprint != Marshal.dump(request.session.data).hash
16
16
  set_cookie(_session_id_key, request.session.session_id, _session_expiry) if (@_new_cookie || request.session.needs_new_cookie)
17
17
  end
@@ -84,14 +84,22 @@ module Merb
84
84
  end
85
85
 
86
86
  # Lazy-delete of session data
87
- def delete
88
- self.data = {}
87
+ def delete(key = nil)
88
+ key ? self.data.delete(key) : self.data.clear
89
89
  end
90
90
 
91
91
  def [](key)
92
92
  data[key]
93
93
  end
94
94
 
95
+ def empty?
96
+ data.empty?
97
+ end
98
+
99
+ def each(&b)
100
+ data.each(&b)
101
+ end
102
+
95
103
  def []=(key, val)
96
104
  data[key] = val
97
105
  end
@@ -1,6 +1,6 @@
1
1
  # make sure we're running inside Merb
2
2
  if defined?(Merb::Plugins)
3
- if Merb::Server.app_loaded?
3
+ if Merb::BootLoader.app_loaded?
4
4
  puts "Warning: The merb_active_record gem must be loaded before the application"
5
5
  else
6
6
  require "merb/orms/active_record/connection"
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.2
2
+ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: merb_activerecord
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.4.3
7
- date: 2007-11-12 00:00:00 -06:00
6
+ version: "0.5"
7
+ date: 2008-01-09 00:00:00 -08:00
8
8
  summary: Merb plugin that provides ActiveRecord support for Merb
9
9
  require_paths:
10
10
  - lib
@@ -92,5 +92,5 @@ dependencies:
92
92
  requirements:
93
93
  - - ">="
94
94
  - !ruby/object:Gem::Version
95
- version: 0.4.0
95
+ version: "0.5"
96
96
  version: