sinatra-activerecord 1.7.0 → 2.0.0.rc

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5e6daf84b3cb0108a5eb8ccf9d9c12235ff8880c
4
- data.tar.gz: 767c48d339c80928c7efd9e3439317a108725606
3
+ metadata.gz: 73174bc1c11d020135e4dc1ad39349cb924a96b5
4
+ data.tar.gz: 41f81bf2f42246da958410ee0f36580d641ab755
5
5
  SHA512:
6
- metadata.gz: f13743ccadcb71e61e284df3bca9e8b502f93e447ccbc082d5e8147f1c92bc2a01ccfd152313a971185a45b96425d72233c65bb6461e52e3733a9ecc6061ef2b
7
- data.tar.gz: 84c62f7fdad2bc8087da92592b23f6d71888ffca5b072e574b8a0c21f74b29951bb4dbcca713b7b8acf9c4686acf59a539f99ae8b448ca32fbcadf54f077f0da
6
+ metadata.gz: 7bb21bcd938987562b04c529a8cfa37f0e68626fd832f488da1812a74493eb9fa6e58b7888363b153f3c7580a077cde84b439bc8e30ad8371c66d8b927c808af
7
+ data.tar.gz: b60744c2788b99a3b0d5a59a3ea03da15372a52a5cdd2fb571bf2980408e369fc6117db4401912a63dbdb893bd8bf817c47e56faa0beb85e67ae7cdc03455d3f
@@ -1,7 +1,11 @@
1
1
  require 'sinatra/base'
2
2
  require 'active_record'
3
+ require 'active_support/core_ext/hash/keys'
4
+
3
5
  require 'logger'
4
- require 'active_support/core_ext/string/strip'
6
+ require 'pathname'
7
+ require 'yaml'
8
+ require 'erb'
5
9
 
6
10
  module Sinatra
7
11
  module ActiveRecordHelper
@@ -11,50 +15,11 @@ module Sinatra
11
15
  end
12
16
 
13
17
  module ActiveRecordExtension
14
- def database=(spec)
15
- set :database_spec, spec
16
- @database = nil
17
- database
18
- end
19
-
20
- def database
21
- @database ||= begin
22
- ActiveRecord::Base.logger = activerecord_logger
23
- ActiveRecord::Base.establish_connection(resolve_spec(database_spec))
24
- begin
25
- ActiveRecord::Base.connection
26
- rescue Exception => e
27
- end
28
- ActiveRecord::Base
29
- end
30
- end
31
-
32
- def database_file=(path)
33
- require 'pathname'
34
-
35
- return if root.nil?
36
- path = File.join(root, path) if Pathname.new(path).relative?
37
-
38
- if File.exists?(path)
39
- require 'yaml'
40
- require 'erb'
41
-
42
- database_hash = YAML.load(ERB.new(File.read(path)).result) || {}
43
- ActiveRecord::Base.configurations = database_hash
44
-
45
- database_hash = database_hash[environment.to_s] if database_hash[environment.to_s]
46
-
47
- set :database, database_hash
48
- end
49
- end
50
-
51
- protected
52
-
53
18
  def self.registered(app)
54
- app.set :activerecord_logger, Logger.new(STDOUT)
55
- app.set :database_spec, ENV['DATABASE_URL']
56
- app.set :database_file, "#{Dir.pwd}/config/database.yml"
57
- app.database if app.database_spec
19
+ app.set :database, ENV['DATABASE_URL'] if ENV['DATABASE_URL']
20
+ app.set :database_file, "#{Dir.pwd}/config/database.yml" if File.exists?("#{Dir.pwd}/config/database.yml")
21
+ ActiveRecord::Base.logger = Logger.new(STDOUT)
22
+
58
23
  app.helpers ActiveRecordHelper
59
24
 
60
25
  # re-connect if database connection dropped
@@ -62,21 +27,27 @@ module Sinatra
62
27
  app.after { ActiveRecord::Base.clear_active_connections! }
63
28
  end
64
29
 
65
- private
30
+ def database_file=(path)
31
+ path = File.join(root, path) if Pathname(path).relative? and root
32
+ spec = YAML.load(ERB.new(File.read(path)).result) || {}
33
+ set :database, spec
34
+ end
66
35
 
67
- def resolve_spec(database_spec)
68
- if database_spec.is_a?(String)
69
- if database_spec =~ %r{^sqlite3?://[^/]+$}
70
- warn <<-MESSAGE.strip_heredoc
71
- It seems your database URL looks something like this: "sqlite3://<database_name>".
72
- This doesn't work anymore, you need to use 3 slashes, like this: "sqlite3:///<database_name>".
73
- MESSAGE
74
- end
75
- database_spec.sub(/^sqlite:/, "sqlite3:")
36
+ def database=(spec)
37
+ if spec.is_a?(Hash) and spec.symbolize_keys[environment]
38
+ ActiveRecord::Base.configurations = spec.stringify_keys
39
+ ActiveRecord::Base.establish_connection(environment)
76
40
  else
77
- database_spec
41
+ ActiveRecord::Base.establish_connection(spec)
42
+ ActiveRecord::Base.configurations = {
43
+ environment.to_s => ActiveRecord::Base.connection.pool.spec.config
44
+ }
78
45
  end
79
46
  end
47
+
48
+ def database
49
+ ActiveRecord::Base
50
+ end
80
51
  end
81
52
 
82
53
  register ActiveRecordExtension
@@ -1,148 +1,51 @@
1
- require 'active_record'
2
- require 'active_support/core_ext/string/strip'
3
- require 'fileutils'
1
+ case ActiveRecord::VERSION::MAJOR
2
+ when 4
4
3
 
5
- module Sinatra
6
- module ActiveRecordTasks
7
- extend self
8
-
9
- def create
10
- silence_activerecord do
11
- ActiveRecord::Tasks::DatabaseTasks.create(config)
12
- end
13
- end
14
-
15
- def drop
16
- silence_activerecord do
17
- ActiveRecord::Tasks::DatabaseTasks.drop(config)
18
- end
19
- end
20
-
21
- def seed
22
- silence_activerecord do
23
- load("#{db_dir}/seeds.rb")
24
- end
4
+ seed_loader = Object.new
5
+ seed_loader.instance_eval do
6
+ def load_seed
7
+ load "#{ActiveRecord::Tasks::DatabaseTasks.db_dir}/seeds.rb"
25
8
  end
9
+ end
26
10
 
27
- def setup
28
- silence_activerecord do
29
- create
30
- load_schema
31
- seed
32
- end
33
- end
11
+ ActiveRecord::Tasks::DatabaseTasks.tap do |config|
12
+ config.root = Rake.application.original_dir
13
+ config.env = ENV["RACK_ENV"] || "development"
14
+ config.db_dir = "db"
15
+ config.migrations_paths = ["db/migrate"]
16
+ config.fixtures_path = "test/fixtures"
17
+ config.seed_loader = seed_loader
18
+ config.database_configuration = ActiveRecord::Base.configurations
19
+ end
34
20
 
35
- def create_migration(migration_name, version = nil)
36
- raise "No NAME specified. Example usage: `rake db:create_migration NAME=create_users`" if migration_name.nil?
21
+ when 3
37
22
 
38
- migration_number = version || Time.now.utc.strftime("%Y%m%d%H%M%S")
39
- migration_file = File.join(migrations_dir, "#{migration_number}_#{migration_name}.rb")
40
- migration_class = migration_name.split("_").map(&:capitalize).join
23
+ require "active_support/string_inquirer"
41
24
 
42
- FileUtils.mkdir_p(migrations_dir)
43
- File.open(migration_file, 'w') do |file|
44
- file.write <<-MIGRATION.strip_heredoc
45
- class #{migration_class} < ActiveRecord::Migration
46
- def change
47
- end
48
- end
49
- MIGRATION
50
- end
51
- end
25
+ module Rails
26
+ extend self
52
27
 
53
- def migrate(version = nil)
54
- silence_activerecord do
55
- migration_version = version ? version.to_i : version
56
- ActiveRecord::Migrator.migrate(migrations_dir, migration_version)
57
- end
28
+ def root
29
+ Pathname.new(Rake.application.original_dir)
58
30
  end
59
31
 
60
- def rollback(step = nil)
61
- silence_activerecord do
62
- migration_step = step ? step.to_i : 1
63
- ActiveRecord::Migrator.rollback(migrations_dir, migration_step)
64
- end
32
+ def env
33
+ ActiveSupport::StringInquirer.new(ENV["RACK_ENV"] || "development")
65
34
  end
66
35
 
67
- def dump_schema(file_name = "#{db_dir}/schema.rb")
68
- silence_activerecord do
69
- ActiveRecord::Migration.suppress_messages do
70
- # Create file
71
- out = File.new(file_name, 'w')
72
-
73
- # Load schema
74
- ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, out)
75
-
76
- out.close
36
+ def application
37
+ seed_loader = Object.new
38
+ seed_loader.instance_eval do
39
+ def load_seed
40
+ load "db/seeds.rb"
77
41
  end
78
42
  end
79
- end
80
-
81
- def dump_structure(file_name = "#{db_dir}/structure.sql")
82
- ActiveRecord::Tasks::DatabaseTasks.structure_dump(config, file_name)
83
- end
84
-
85
- def purge
86
- if config
87
- ActiveRecord::Tasks::DatabaseTasks.purge(config)
88
- else
89
- raise ActiveRecord::ConnectionNotEstablished
90
- end
91
- end
92
-
93
- def load_schema(file_name = "#{db_dir}/schema.rb")
94
- load(file_name)
95
- end
96
-
97
- def load_structure(file_name = "#{db_dir}/structure.sql")
98
- ActiveRecord::Tasks::DatabaseTasks.structure_load(config, file_name)
99
- end
100
-
101
- def with_config_environment(environment, &block)
102
- previous_environment = config_environment
103
- begin
104
- config_environment(environment)
105
- yield
106
- ensure
107
- config_environment(previous_environment)
108
- end
109
- end
110
-
111
- def db_dir
112
- ActiveRecord::Tasks::DatabaseTasks.db_dir ||= 'db'
113
- end
114
-
115
- def db_dir=(dir)
116
- ActiveRecord::Tasks::DatabaseTasks.db_dir = dir
117
- end
118
-
119
- private
120
-
121
- def config_environment(env = nil)
122
- if env
123
- @config_environment = env
124
- else
125
- @config_environment ||= Sinatra::Application.environment.to_s
126
- end
127
- end
128
-
129
- def config
130
- ActiveRecord::Base.configurations[config_environment] ||
131
- #active record expects the keys to be strings, but connection_config returns them as symbols
132
- Hash[ActiveRecord::Base.connection_config.map{|key, value| [key.to_s, value]}]
133
- end
134
-
135
- def migrations_dir
136
- ActiveRecord::Migrator.migrations_path
137
- end
138
-
139
- def silence_activerecord(&block)
140
- old_logger = ActiveRecord::Base.logger
141
- ActiveRecord::Base.logger = nil
142
- yield if block_given?
143
- ActiveRecord::Base.logger = old_logger
43
+ seed_loader
144
44
  end
145
45
  end
46
+
146
47
  end
147
48
 
49
+ ActiveRecord::Base.logger = nil
50
+
148
51
  load 'sinatra/activerecord/tasks.rake'
@@ -1,98 +1,40 @@
1
- require 'rake'
1
+ require "active_support/core_ext/string/strip"
2
+ require "pathname"
2
3
 
3
- namespace :db do
4
- desc "create the database from config/database.yml from the current Sinatra env"
5
- task :create do
6
- Sinatra::ActiveRecordTasks.create
7
- end
8
-
9
- desc "drops the data from config/database.yml from the current Sinatra env"
10
- task :drop do
11
- Sinatra::ActiveRecordTasks.drop
12
- end
13
-
14
- desc "load the seed data from db/seeds.rb"
15
- task :seed do
16
- Sinatra::ActiveRecordTasks.seed
17
- end
18
-
19
- desc "create the database and load the schema"
20
- task :setup do
21
- Sinatra::ActiveRecordTasks.setup
22
- end
4
+ load "active_record/railties/databases.rake"
23
5
 
24
- desc "create an ActiveRecord migration"
6
+ namespace :db do
7
+ desc "Create a migration (parameters: NAME, VERSION)"
25
8
  task :create_migration do
26
- Sinatra::ActiveRecordTasks.create_migration(ENV["NAME"], ENV["VERSION"])
27
- end
28
-
29
- desc "migrate the database (use version with VERSION=n)"
30
- task :migrate do
31
- Sinatra::ActiveRecordTasks.migrate(ENV["VERSION"])
32
-
33
- case ActiveRecord::Base.schema_format
34
- when :ruby then Rake::Task["db:schema:dump"].invoke
35
- when :sql then Rake::Task["db:structure:dump"].invoke
9
+ unless ENV["NAME"]
10
+ puts "No NAME specified. Example usage: `rake db:create_migration NAME=create_users`"
11
+ exit
36
12
  end
37
- end
38
-
39
- namespace :migrate do
40
- task :reset => ['db:drop', 'db:create', 'db:migrate']
41
- end
42
13
 
43
- task :reset => ['db:drop', 'db:setup']
14
+ name = ENV["NAME"]
15
+ version = ENV["VERSION"] || Time.now.utc.strftime("%Y%m%d%H%M%S")
44
16
 
45
- desc "roll back the migration (use steps with STEP=n)"
46
- task :rollback do
47
- Sinatra::ActiveRecordTasks.rollback(ENV["STEP"])
17
+ filename = "#{version}_#{name}.rb"
18
+ dirname = ActiveRecord::Migrator.migrations_path
19
+ path = Pathname(File.join(dirname, filename))
48
20
 
49
- case ActiveRecord::Base.schema_format
50
- when :ruby then Rake::Task["db:schema:dump"].invoke
51
- when :sql then Rake::Task["db:structure:dump"].invoke
52
- end
53
- end
54
-
55
- namespace :schema do
56
- desc "dump schema into file"
57
- task :dump do
58
- Sinatra::ActiveRecordTasks.dump_schema
59
- end
60
-
61
- desc "load schema into database"
62
- task :load do
63
- Sinatra::ActiveRecordTasks.load_schema
64
- end
65
- end
66
-
67
- namespace :structure do
68
- desc "dump schema into a file as SQL"
69
- task :dump do
70
- Sinatra::ActiveRecordTasks.dump_structure
71
- end
21
+ path.dirname.mkpath
22
+ path.write <<-MIGRATION.strip_heredoc
23
+ class #{name.camelize} < ActiveRecord::Migration
24
+ def change
25
+ end
26
+ end
27
+ MIGRATION
72
28
 
73
- desc "load schema into database"
74
- task :load do
75
- Sinatra::ActiveRecordTasks.load_structure
76
- end
29
+ puts path
77
30
  end
78
31
 
79
- namespace :test do
80
- task :purge do
81
- Sinatra::ActiveRecordTasks.with_config_environment 'test' do
82
- Sinatra::ActiveRecordTasks.purge
83
- end
84
- end
32
+ task :environment
85
33
 
86
- task :load => :purge do
87
- ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations['test'])
88
- Sinatra::ActiveRecordTasks.with_config_environment 'test' do
89
- Sinatra::ActiveRecordTasks.load_schema
90
- end
91
- end
34
+ Rake::Task["db:test:deprecated"].clear if Rake::Task.task_defined?("db:test:deprecated")
92
35
 
93
- desc 'Prepare test database from development schema'
94
- task :prepare do
95
- Rake::Task["db:test:load"].invoke
96
- end
36
+ if ActiveRecord::VERSION::MAJOR == 3
37
+ Rake::Task["db:load_config"].clear
38
+ task :rails_env
97
39
  end
98
40
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-activerecord
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 2.0.0.rc
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blake Mizerany
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-04-08 00:00:00.000000000 Z
12
+ date: 2014-04-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: '3.0'
34
+ version: '3.2'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: '3.0'
41
+ version: '3.2'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rake
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -81,6 +81,20 @@ dependencies:
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: appraisal
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
84
98
  description: Extends Sinatra with ActiveRecord helpers.
85
99
  email: janko.marohnic@gmail.com
86
100
  executables: []
@@ -107,9 +121,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
107
121
  version: 1.9.2
108
122
  required_rubygems_version: !ruby/object:Gem::Requirement
109
123
  requirements:
110
- - - ">="
124
+ - - ">"
111
125
  - !ruby/object:Gem::Version
112
- version: '0'
126
+ version: 1.3.1
113
127
  requirements: []
114
128
  rubyforge_project:
115
129
  rubygems_version: 2.2.0