rom-rails 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2ad7fe254e8fd3118cbdac07bf9bc51d0b686e32
4
- data.tar.gz: 73527dafdfb2542cbc1dc30559dc56d66cfb5c08
3
+ metadata.gz: d53fad0999e88095261c12196674bf05ef9754eb
4
+ data.tar.gz: 134a8100ee7b0b4967315b3ce342a1526b9280e8
5
5
  SHA512:
6
- metadata.gz: d5968c5f300b0e336727b13919b9a7204f2fb40dc541bf6818c7eb05eb913ee3c82b78375d07ea16aec8fdbe2834a914dc034966ff28d7f45716c2fe44c52cb8
7
- data.tar.gz: fe6ab28f3f240bdba00fe1282ee9aa34a42f5f51230b1329b17fdb39ae3352ece725cbf89a97e39ff29754b61e0fdf67e5038f302d40dd8c22e872755327f0b3
6
+ metadata.gz: ff2d1b07af8d3e2ad0263ea1f7fa1d433dc1f3da4c801710f51daa778dc9b903224747bdd55a9ca9bb232103a4561ef332161a6db12bd367a9ffe6e130fd127b
7
+ data.tar.gz: ebf50d904cd43b7be7addd0c9167921e4ae9924250b8e69aea2bbd8f9f705020f80865fc5336b8a1ee67480b8b6833d241250cb3c732afc4ed2138d2bf67c571
data/CHANGELOG.md CHANGED
@@ -1,3 +1,19 @@
1
+ ## v0.3.3 2015-05-22
2
+
3
+ ### Added
4
+
5
+ * `db:setup` task which works OOTB with rom-sql tasks (solnic)
6
+
7
+ ### Changed
8
+
9
+ * `MissingRepositoryConfigError` is raised when repositories are not configured (solnic)
10
+
11
+ ### Fixed
12
+
13
+ * The railitie no longer set `nil` as default repository when ActiveRecord is not present (solnic)
14
+
15
+ [Compare v0.3.2...v0.3.3](https://github.com/rom-rb/rom-rails/compare/v0.3.2...v0.3.3)
16
+
1
17
  ## v0.3.2 2015-05-17
2
18
 
3
19
  ### Fixed
data/Gemfile CHANGED
@@ -4,11 +4,12 @@ gemspec
4
4
 
5
5
  RAILS_VERSION = '4.2.1'
6
6
 
7
- %w(railties activemodel actionview actionpack).each do |name|
7
+ %w(railties activemodel actionview actionpack activerecord).each do |name|
8
8
  gem name, RAILS_VERSION
9
9
  end
10
10
 
11
11
  gem 'sqlite3', platforms: [:mri, :rbx]
12
+ gem 'byebug', platforms: :mri
12
13
 
13
14
  platforms :jruby do
14
15
  gem 'jdbc-sqlite3'
@@ -18,7 +19,6 @@ group :test do
18
19
  gem 'rack-test'
19
20
  gem 'rom', github: 'rom-rb/rom', branch: 'master'
20
21
  gem 'rom-sql', github: 'rom-rb/rom-sql', branch: 'master'
21
- gem 'byebug', platforms: :mri
22
22
  gem 'rspec-rails', '~> 3.1'
23
23
  gem 'codeclimate-test-reporter', require: nil
24
24
  gem 'database_cleaner'
data/Rakefile CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'bundler/setup'
2
2
  require 'rubocop/rake_task'
3
3
 
4
- task default: %w(app:db:schema:load app:spec rubocop)
4
+ task default: %w(app:spec rubocop)
5
5
 
6
6
  APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
7
7
  load 'rails/tasks/engine.rake'
@@ -10,6 +10,47 @@ Spring.after_fork { ROM::Rails::Railtie.disconnect } if defined?(Spring)
10
10
  module ROM
11
11
  module Rails
12
12
  class Railtie < ::Rails::Railtie
13
+ COMPONENT_DIRS = %w(relations mappers commands).freeze
14
+
15
+ MissingRepositoryConfigError = Class.new(StandardError)
16
+
17
+ # @api public
18
+ def self.setup_repositories
19
+ raise(
20
+ MissingRepositoryConfigError,
21
+ "seems like you didn't configure any repositories"
22
+ ) unless config.rom.repositories.any?
23
+
24
+ ROM.setup(config.rom.repositories)
25
+ self
26
+ end
27
+
28
+ # @api public
29
+ def self.finalize
30
+ ROM.finalize
31
+ self
32
+ end
33
+
34
+ # If there's no default repository configured, try to infer it from
35
+ # other sources, e.g. ActiveRecord.
36
+ #
37
+ # @api private
38
+ def self.infer_default_repository
39
+ return unless active_record?
40
+ spec = ROM::Rails::ActiveRecord::Configuration.call
41
+ [:sql, spec[:uri], spec[:options]]
42
+ end
43
+
44
+ # @api private
45
+ def self.active_record?
46
+ defined?(::ActiveRecord)
47
+ end
48
+
49
+ # @api private
50
+ def before_initialize
51
+ config.rom = Configuration.new
52
+ end
53
+
13
54
  initializer 'rom.configure_action_controller' do
14
55
  ActiveSupport.on_load(:action_controller) do
15
56
  ActionController::Base.send(:include, ControllerExtension)
@@ -17,17 +58,21 @@ module ROM
17
58
  end
18
59
 
19
60
  initializer 'rom.adjust_eager_load_paths' do |app|
20
- paths = %w(commands mappers relations).map do |directory|
61
+ paths = COMPONENT_DIRS.map do |directory|
21
62
  ::Rails.root.join('app', directory).to_s
22
63
  end
23
64
 
24
65
  app.config.eager_load_paths -= paths
25
66
  end
26
67
 
68
+ rake_tasks do
69
+ load "rom/rails/tasks/db.rake" unless self.class.active_record?
70
+ end
71
+
27
72
  # Make `ROM::Rails::Configuration` instance available to the user via
28
73
  # `Rails.application.config` before other initializers run.
29
74
  config.before_initialize do |_app|
30
- config.rom = Configuration.new
75
+ before_initialize
31
76
  end
32
77
 
33
78
  # Reload ROM-related application code on each request.
@@ -40,7 +85,7 @@ module ROM
40
85
  #
41
86
  # @example
42
87
  # ROM::Rails::Railtie.configure do |config|
43
- # config.repositories[:yaml] = {uri: 'yaml:///data'}
88
+ # config.repositories[:default] = [:yaml, 'yaml:///data']
44
89
  # end
45
90
  #
46
91
  # @api public
@@ -52,45 +97,45 @@ module ROM
52
97
  end
53
98
  end
54
99
 
100
+ # TODO: Add `ROM.env.disconnect` to core.
101
+ #
102
+ # @api private
55
103
  def disconnect
56
- # TODO: Add `ROM.env.disconnect` to core.
57
104
  ROM.env.repositories.each_value(&:disconnect)
58
105
  end
59
106
 
107
+ # @api private
60
108
  def setup
61
109
  if ROM.env
62
110
  ROM.setup(ROM.env.repositories)
63
111
  else
64
112
  repositories = config.rom.repositories
65
113
 
66
- # If there's no default repository configured, try to infer it from
67
- # other sources, e.g. ActiveRecord.
68
- repositories[:default] ||= infer_default_repository
114
+ if self.class.active_record?
115
+ repositories[:default] ||= self.class.infer_default_repository
116
+ end
69
117
 
70
- ROM.setup(repositories.symbolize_keys)
118
+ self.class.setup_repositories
71
119
  end
72
120
  load_all
73
- ROM.finalize
74
- end
75
-
76
- def infer_default_repository
77
- return unless defined?(::ActiveRecord)
78
- spec = ActiveRecord::Configuration.call
79
- [:sql, spec[:uri], spec[:options]]
121
+ self.class.finalize
80
122
  end
81
123
 
124
+ # @api private
82
125
  def load_all
83
- %w(relations mappers commands).each do |type|
126
+ COMPONENT_DIRS.each do |type|
84
127
  load_files(type)
85
128
  end
86
129
  end
87
130
 
131
+ # @api private
88
132
  def load_files(type)
89
133
  Dir[root.join("app/#{type}/**/*.rb").to_s].each do |path|
90
134
  require_dependency(path)
91
135
  end
92
136
  end
93
137
 
138
+ # @api private
94
139
  def root
95
140
  ::Rails.root
96
141
  end
@@ -0,0 +1,11 @@
1
+ namespace :db do
2
+ desc 'Set up ROM repositories'
3
+ task :setup do
4
+ railtie = ROM::Rails::Railtie
5
+ railtie.before_initialize
6
+
7
+ require "#{Rails.root}/config/initializers/rom"
8
+
9
+ railtie.setup_repositories.finalize
10
+ end
11
+ end
@@ -1,5 +1,5 @@
1
1
  module ROM
2
2
  module Rails
3
- VERSION = '0.3.2'.freeze
3
+ VERSION = '0.3.3'.freeze
4
4
  end
5
5
  end
data/spec/dummy/Rakefile CHANGED
@@ -6,11 +6,3 @@ require File.expand_path('../config/application', __FILE__)
6
6
  Dummy::Application.load_tasks
7
7
 
8
8
  require 'rom/sql/rake_task'
9
-
10
- namespace :db do
11
- task :setup do
12
- scheme = RUBY_ENGINE == 'jruby' ? 'jdbc:sqlite' : 'sqlite'
13
- ROM.setup(:sql, "#{scheme}://#{Rails.root}/db/#{Rails.env}.sqlite3")
14
- ROM.finalize
15
- end
16
- end
@@ -6,6 +6,6 @@ class UpdateUserForm < UserForm
6
6
  end
7
7
 
8
8
  def commit!
9
- users.try { users.update.by_id(id).set(attributes) }
9
+ users.try { users.update.by_id(id).call(attributes) }
10
10
  end
11
11
  end
@@ -1,6 +1,6 @@
1
1
  require File.expand_path('../boot', __FILE__)
2
2
 
3
- require "action_controller/railtie"
3
+ require 'action_controller/railtie'
4
4
 
5
5
  Bundler.setup(:default, Rails.env)
6
6
 
@@ -1,7 +1,3 @@
1
- development:
2
- adapter: sqlite3
3
- database: "db/development.sqlite3"
4
-
5
1
  test:
6
2
  adapter: sqlite3
7
- database: "db/test.sqlite3"
3
+ database: "db/test-ar.sqlite3"
@@ -1,10 +1,5 @@
1
1
  ROM::Rails::Railtie.configure do |config|
2
- db_config = ROM::Rails::ActiveRecord::Configuration.build(
3
- Rails.application.config.database_configuration[Rails.env].symbolize_keys
4
- .merge(root: Rails.root)
5
- )
6
-
7
- config.repositories[:default] = [:sql, db_config[:uri], db_config[:options]]
8
-
2
+ scheme = RUBY_ENGINE == 'jruby' ? 'jdbc:sqlite' : 'sqlite'
3
+ config.repositories[:default] = [:sql, "#{scheme}://#{Rails.root}/db/#{Rails.env}.sqlite3"]
9
4
  config.repositories[:test] = [:test_adapter, foo: :bar]
10
5
  end
@@ -0,0 +1,6 @@
1
+ describe 'Connects to repositories using database.yml' do
2
+ it 'works' do
3
+ pending 'I have no idea how to load AR in isolation'
4
+ raise 'database.yml must go'
5
+ end
6
+ end
@@ -213,6 +213,7 @@ describe 'Form' do
213
213
  it "recovers from database errors" do
214
214
  form = Class.new(ROM::Model::Form) do
215
215
  commands users: :create
216
+
216
217
  input do
217
218
  set_model_name 'User'
218
219
 
@@ -220,24 +221,16 @@ describe 'Form' do
220
221
  end
221
222
 
222
223
  def commit!(*args)
223
-
224
224
  users.try {
225
225
  raise ROM::SQL::ConstraintError.new(RuntimeError.new("duplicate key"))
226
226
  }
227
-
228
227
  end
229
228
  end
230
229
 
231
- result = form.build(email: 'test@example.com').save
232
-
233
- expect(result).not_to be_success
234
-
235
- expect(result.errors[:email]).to eq []
236
- expect(result.errors[:base]).to eq ["a database error prevented saving this form"]
230
+ expect {
231
+ form.build(email: 'test@example.com').save
232
+ }.to raise_error(ROM::SQL::ConstraintError)
237
233
  end
238
-
239
-
240
-
241
234
  end
242
235
 
243
236
  describe "#attributes" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rom-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Solnica
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-17 00:00:00.000000000 Z
11
+ date: 2015-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rom
@@ -182,6 +182,7 @@ files:
182
182
  - lib/rom/rails/model/validator.rb
183
183
  - lib/rom/rails/model/validator/uniqueness_validator.rb
184
184
  - lib/rom/rails/railtie.rb
185
+ - lib/rom/rails/tasks/db.rake
185
186
  - lib/rom/rails/version.rb
186
187
  - rom-rails.gemspec
187
188
  - spec/dummy/.rspec
@@ -241,6 +242,7 @@ files:
241
242
  - spec/dummy/public/favicon.ico
242
243
  - spec/dummy/public/robots.txt
243
244
  - spec/dummy/spec/features/users_spec.rb
245
+ - spec/dummy/spec/integration/activerecord_setup.rb
244
246
  - spec/dummy/spec/integration/form_with_injected_commands_spec.rb
245
247
  - spec/dummy/spec/integration/initializer_spec.rb
246
248
  - spec/dummy/spec/integration/logger_spec.rb
@@ -340,6 +342,7 @@ test_files:
340
342
  - spec/dummy/public/favicon.ico
341
343
  - spec/dummy/public/robots.txt
342
344
  - spec/dummy/spec/features/users_spec.rb
345
+ - spec/dummy/spec/integration/activerecord_setup.rb
343
346
  - spec/dummy/spec/integration/form_with_injected_commands_spec.rb
344
347
  - spec/dummy/spec/integration/initializer_spec.rb
345
348
  - spec/dummy/spec/integration/logger_spec.rb