dry-web 0.1.0

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.
Files changed (75) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +34 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +30 -0
  5. data/CHANGELOG.md +16 -0
  6. data/CODE_OF_CONDUCT.md +13 -0
  7. data/Gemfile +21 -0
  8. data/LICENSE +22 -0
  9. data/LICENSE.txt +22 -0
  10. data/README.md +46 -0
  11. data/Rakefile +6 -0
  12. data/lib/dry-web.rb +8 -0
  13. data/lib/dry/web/application.rb +34 -0
  14. data/lib/dry/web/cli.rb +17 -0
  15. data/lib/dry/web/container.rb +9 -0
  16. data/lib/dry/web/transaction.rb +19 -0
  17. data/lib/dry/web/version.rb +5 -0
  18. data/lib/roda/plugins/flow.rb +71 -0
  19. data/rodakase.gemspec +34 -0
  20. data/skeletons/simple/.ruby-version +1 -0
  21. data/skeletons/simple/Gemfile +11 -0
  22. data/skeletons/simple/README.md +21 -0
  23. data/skeletons/simple/Rakefile +4 -0
  24. data/skeletons/simple/bin/console +6 -0
  25. data/skeletons/simple/config.ru +3 -0
  26. data/skeletons/simple/config/application.yml +4 -0
  27. data/skeletons/simple/core/boot.rb +12 -0
  28. data/skeletons/simple/core/simple/application.rb +16 -0
  29. data/skeletons/simple/core/simple/container.rb +11 -0
  30. data/skeletons/simple/core/simple/import.rb +9 -0
  31. data/skeletons/simple/lib/entities/user.rb +3 -0
  32. data/skeletons/simple/log/.gitkeep +0 -0
  33. data/skeletons/simple/spec/routes/heartbeat_spec.rb +9 -0
  34. data/skeletons/simple/spec/spec_helper.rb +12 -0
  35. data/skeletons/simple/spec/unit/user_spec.rb +17 -0
  36. data/skeletons/simple/spec/web_helper.rb +20 -0
  37. data/skeletons/simple/web/routes/root.rb +3 -0
  38. data/spec/dummy/apps/main/core/boot.rb +15 -0
  39. data/spec/dummy/apps/main/core/main/application.rb +17 -0
  40. data/spec/dummy/apps/main/core/main/container.rb +16 -0
  41. data/spec/dummy/apps/main/core/main/import.rb +9 -0
  42. data/spec/dummy/apps/main/core/main/requests.rb +21 -0
  43. data/spec/dummy/apps/main/core/main/view.rb +21 -0
  44. data/spec/dummy/apps/main/lib/main/entities/user.rb +5 -0
  45. data/spec/dummy/apps/main/lib/main/persistence/repositories/users.rb +16 -0
  46. data/spec/dummy/apps/main/lib/main/transactions/register_user.rb +19 -0
  47. data/spec/dummy/apps/main/lib/main/views/users/index.rb +17 -0
  48. data/spec/dummy/apps/main/log/.gitkeep +0 -0
  49. data/spec/dummy/apps/main/requests/users.rb +5 -0
  50. data/spec/dummy/apps/main/web/routes/users.rb +19 -0
  51. data/spec/dummy/apps/main/web/templates/layouts/app.html.slim +6 -0
  52. data/spec/dummy/apps/main/web/templates/users/index.html.slim +3 -0
  53. data/spec/dummy/apps/main/web/templates/users/index/_list.html.slim +3 -0
  54. data/spec/dummy/apps/main/web/templates/users/index/_list_item.html.slim +1 -0
  55. data/spec/dummy/bin/console +6 -0
  56. data/spec/dummy/config.ru +3 -0
  57. data/spec/dummy/config/application.yml +4 -0
  58. data/spec/dummy/core/boot.rb +8 -0
  59. data/spec/dummy/core/dummy/application.rb +7 -0
  60. data/spec/dummy/core/dummy/container.rb +14 -0
  61. data/spec/dummy/core/dummy/import.rb +9 -0
  62. data/spec/dummy/log/.gitkeep +0 -0
  63. data/spec/dummy/shared/persistence.rb +12 -0
  64. data/spec/dummy/shared/persistence/db.rb +9 -0
  65. data/spec/fixtures/test/core/boot/bar.rb +11 -0
  66. data/spec/fixtures/test/lib/test/dep.rb +4 -0
  67. data/spec/fixtures/test/lib/test/foo.rb +5 -0
  68. data/spec/fixtures/test/lib/test/models.rb +4 -0
  69. data/spec/fixtures/test/lib/test/models/book.rb +6 -0
  70. data/spec/fixtures/test/lib/test/models/user.rb +6 -0
  71. data/spec/integration/application_spec.rb +21 -0
  72. data/spec/request/users_spec.rb +35 -0
  73. data/spec/spec_helper.rb +44 -0
  74. data/spec/support/helpers.rb +15 -0
  75. metadata +322 -0
@@ -0,0 +1,4 @@
1
+ development:
2
+ DATABASE_URL: 'postgres://localhost/rodakase'
3
+ test:
4
+ DATABASE_URL: 'postgres://localhost/rodakase'
@@ -0,0 +1,8 @@
1
+ require_relative 'dummy/container'
2
+
3
+ Dummy::Container.finalize!
4
+
5
+ app_paths = Pathname(__FILE__).dirname.join('../apps').realpath.join('*')
6
+ Dir[app_paths].each { |f| require "#{f}/core/boot" }
7
+
8
+ require_relative "dummy/application"
@@ -0,0 +1,7 @@
1
+ module Dummy
2
+ class Application < Roda
3
+ route do |r|
4
+ r.run Main::Application.freeze.app
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,14 @@
1
+ require 'dry/web/container'
2
+
3
+ module Dummy
4
+ class Container < Dry::Web::Container
5
+ # we need to override default here because we run tests from within the
6
+ # project root and our app is in spec/dummy
7
+ configure do |config|
8
+ config.root = Pathname(__FILE__).dirname.join('../..')
9
+ config.auto_register = 'lib'
10
+ end
11
+
12
+ load_paths!('lib')
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+ require_relative 'container'
2
+
3
+ module Dummy
4
+ Import = Dummy::Container.import_module
5
+
6
+ def self.Import(*args)
7
+ Import[*args]
8
+ end
9
+ end
File without changes
@@ -0,0 +1,12 @@
1
+ module Persistence
2
+ class Container < Dry::Component::Container
3
+ configure do |config|
4
+ config.root = Pathname(__dir__).join('persistence')
5
+ config.name = :persistence
6
+ end
7
+
8
+ require 'db'
9
+
10
+ register(:db, Db.new)
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ module Persistence
2
+ class Db
3
+ STORE = Hash.new { |k, v| k[v] = [] }
4
+
5
+ def [](name)
6
+ STORE[name]
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ Test::Container.namespace(:test) do |container|
2
+ module Test
3
+ module Bar
4
+ # I shall be booted
5
+ end
6
+ end
7
+
8
+ container.finalize(:bar) do
9
+ container.register(:bar, "I was finalized")
10
+ end
11
+ end
@@ -0,0 +1,4 @@
1
+ module Test
2
+ class Dep
3
+ end
4
+ end
@@ -0,0 +1,5 @@
1
+ module Test
2
+ class Foo
3
+ include Import['test.dep']
4
+ end
5
+ end
@@ -0,0 +1,4 @@
1
+ module Test
2
+ module Models
3
+ end
4
+ end
@@ -0,0 +1,6 @@
1
+ module Test
2
+ module Models
3
+ class Book
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ module Test
2
+ module Models
3
+ class User
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,21 @@
1
+ require 'main/import'
2
+
3
+ RSpec.describe 'Dry Web Application' do
4
+ it 'sets env' do
5
+ expect(Main::Application.config.container.config.env).to be(:test)
6
+ end
7
+
8
+ it 'loads container' do
9
+ expect(Main::Application[:logger]).to be_instance_of(Logger)
10
+ end
11
+
12
+ it 'sets up namespaced dependencies' do
13
+ expect(Main::Application['main.persistence.repositories.users']).to be_instance_of(Main::Persistence::Repositories::Users)
14
+ end
15
+
16
+ it 'sets up auto-injection mechanism' do
17
+ klass = Class.new { include Main::Import(:logger) }
18
+
19
+ expect(klass.new.logger).to be_instance_of(Logger)
20
+ end
21
+ end
@@ -0,0 +1,35 @@
1
+ require 'main/entities/user'
2
+
3
+ RSpec.describe '/users', type: :request do
4
+ describe 'GET /users' do
5
+ it 'renders hello template' do
6
+ get '/users'
7
+
8
+ expect(last_response).to be_ok
9
+
10
+ expect(last_response.body).to eql(
11
+ '<!DOCTYPE html><html><head><title>Woohaa</title></head><body><h1>Users</h1><div class="users"><ul><li>Jane</li><li>Joe</li></ul></div></body></html>'
12
+ )
13
+ end
14
+ end
15
+
16
+ describe 'POST /users' do
17
+ it 'creates a user' do
18
+ user = { id: '1', name: 'Jane' }
19
+
20
+ post '/users', user: user
21
+
22
+ expect(last_response).to be_created
23
+
24
+ expect(container['main.persistence.repositories.users'].all).to eql([Main::Entities::User.new('1', 'Jane')])
25
+ end
26
+
27
+ it 'redirects when name is missing' do
28
+ user = { id: '1' }
29
+
30
+ post '/users', user: user
31
+
32
+ expect(last_response).to be_redirect
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,44 @@
1
+ # encoding: utf-8
2
+
3
+ if RUBY_ENGINE == "rbx"
4
+ require "codeclimate-test-reporter"
5
+ CodeClimate::TestReporter.start
6
+ end
7
+
8
+ begin
9
+ require 'byebug'
10
+ rescue LoadError; end
11
+
12
+ require 'rack/test'
13
+ require 'slim'
14
+
15
+ ENV['RACK_ENV'] = 'test'
16
+
17
+ SPEC_ROOT = Pathname(__FILE__).dirname
18
+
19
+ Dir[SPEC_ROOT.join('support/*.rb').to_s].each { |f| require f }
20
+ Dir[SPEC_ROOT.join('shared/*.rb').to_s].each { |f| require f }
21
+
22
+ require SPEC_ROOT.join('dummy/core/boot').to_s
23
+
24
+ module Test; end
25
+
26
+ RSpec.configure do |config|
27
+ config.disable_monkey_patching!
28
+
29
+ config.before(:suite) do
30
+ Dummy::Application.freeze
31
+ end
32
+
33
+ config.include Rack::Test::Methods, type: :request
34
+ config.include Helpers
35
+
36
+ config.before do
37
+ @test_constants = Test.constants
38
+ end
39
+
40
+ config.after do
41
+ added_constants = Test.constants - @test_constants
42
+ added_constants.each { |name| Test.send(:remove_const, name) }
43
+ end
44
+ end
@@ -0,0 +1,15 @@
1
+ module Helpers
2
+ module_function
3
+
4
+ def fixtures_path
5
+ SPEC_ROOT.join('fixtures')
6
+ end
7
+
8
+ def container
9
+ Main::Container
10
+ end
11
+
12
+ def app
13
+ Dummy::Application.app
14
+ end
15
+ end
metadata ADDED
@@ -0,0 +1,322 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dry-web
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Piotr Solnica
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-04-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: inflecto
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: roda
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.7'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.7'
41
+ - !ruby/object:Gem::Dependency
42
+ name: tilt
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: dry-component
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: dry-configurable
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.1'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: dry-equalizer
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.2'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.2'
97
+ - !ruby/object:Gem::Dependency
98
+ name: dry-transaction
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.5'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.5'
111
+ - !ruby/object:Gem::Dependency
112
+ name: dry-view
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.1'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.1'
125
+ - !ruby/object:Gem::Dependency
126
+ name: bundler
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.7'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1.7'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rake
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '11.0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '11.0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rspec
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '3.4'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '3.4'
167
+ - !ruby/object:Gem::Dependency
168
+ name: capybara
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '2.5'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '2.5'
181
+ description: Lightweight web application stack on top of Roda
182
+ email:
183
+ - piotr.solnica@gmail.com
184
+ executables: []
185
+ extensions: []
186
+ extra_rdoc_files: []
187
+ files:
188
+ - ".gitignore"
189
+ - ".rspec"
190
+ - ".travis.yml"
191
+ - CHANGELOG.md
192
+ - CODE_OF_CONDUCT.md
193
+ - Gemfile
194
+ - LICENSE
195
+ - LICENSE.txt
196
+ - README.md
197
+ - Rakefile
198
+ - lib/dry-web.rb
199
+ - lib/dry/web/application.rb
200
+ - lib/dry/web/cli.rb
201
+ - lib/dry/web/container.rb
202
+ - lib/dry/web/transaction.rb
203
+ - lib/dry/web/version.rb
204
+ - lib/roda/plugins/flow.rb
205
+ - rodakase.gemspec
206
+ - skeletons/simple/.ruby-version
207
+ - skeletons/simple/Gemfile
208
+ - skeletons/simple/README.md
209
+ - skeletons/simple/Rakefile
210
+ - skeletons/simple/bin/console
211
+ - skeletons/simple/config.ru
212
+ - skeletons/simple/config/application.yml
213
+ - skeletons/simple/core/boot.rb
214
+ - skeletons/simple/core/simple/application.rb
215
+ - skeletons/simple/core/simple/container.rb
216
+ - skeletons/simple/core/simple/import.rb
217
+ - skeletons/simple/lib/entities/user.rb
218
+ - skeletons/simple/log/.gitkeep
219
+ - skeletons/simple/spec/routes/heartbeat_spec.rb
220
+ - skeletons/simple/spec/spec_helper.rb
221
+ - skeletons/simple/spec/unit/user_spec.rb
222
+ - skeletons/simple/spec/web_helper.rb
223
+ - skeletons/simple/web/routes/root.rb
224
+ - spec/dummy/apps/main/core/boot.rb
225
+ - spec/dummy/apps/main/core/main/application.rb
226
+ - spec/dummy/apps/main/core/main/container.rb
227
+ - spec/dummy/apps/main/core/main/import.rb
228
+ - spec/dummy/apps/main/core/main/requests.rb
229
+ - spec/dummy/apps/main/core/main/view.rb
230
+ - spec/dummy/apps/main/lib/main/entities/user.rb
231
+ - spec/dummy/apps/main/lib/main/persistence/repositories/users.rb
232
+ - spec/dummy/apps/main/lib/main/transactions/register_user.rb
233
+ - spec/dummy/apps/main/lib/main/views/users/index.rb
234
+ - spec/dummy/apps/main/log/.gitkeep
235
+ - spec/dummy/apps/main/requests/users.rb
236
+ - spec/dummy/apps/main/web/routes/users.rb
237
+ - spec/dummy/apps/main/web/templates/layouts/app.html.slim
238
+ - spec/dummy/apps/main/web/templates/users/index.html.slim
239
+ - spec/dummy/apps/main/web/templates/users/index/_list.html.slim
240
+ - spec/dummy/apps/main/web/templates/users/index/_list_item.html.slim
241
+ - spec/dummy/bin/console
242
+ - spec/dummy/config.ru
243
+ - spec/dummy/config/application.yml
244
+ - spec/dummy/core/boot.rb
245
+ - spec/dummy/core/dummy/application.rb
246
+ - spec/dummy/core/dummy/container.rb
247
+ - spec/dummy/core/dummy/import.rb
248
+ - spec/dummy/log/.gitkeep
249
+ - spec/dummy/shared/persistence.rb
250
+ - spec/dummy/shared/persistence/db.rb
251
+ - spec/fixtures/test/core/boot/bar.rb
252
+ - spec/fixtures/test/lib/test/dep.rb
253
+ - spec/fixtures/test/lib/test/foo.rb
254
+ - spec/fixtures/test/lib/test/models.rb
255
+ - spec/fixtures/test/lib/test/models/book.rb
256
+ - spec/fixtures/test/lib/test/models/user.rb
257
+ - spec/integration/application_spec.rb
258
+ - spec/request/users_spec.rb
259
+ - spec/spec_helper.rb
260
+ - spec/support/helpers.rb
261
+ homepage: https://github.com/solnic/rodakase
262
+ licenses:
263
+ - MIT
264
+ metadata: {}
265
+ post_install_message:
266
+ rdoc_options: []
267
+ require_paths:
268
+ - lib
269
+ required_ruby_version: !ruby/object:Gem::Requirement
270
+ requirements:
271
+ - - ">="
272
+ - !ruby/object:Gem::Version
273
+ version: '0'
274
+ required_rubygems_version: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - ">="
277
+ - !ruby/object:Gem::Version
278
+ version: '0'
279
+ requirements: []
280
+ rubyforge_project:
281
+ rubygems_version: 2.5.1
282
+ signing_key:
283
+ specification_version: 4
284
+ summary: Lightweight web application stack on top of Roda
285
+ test_files:
286
+ - spec/dummy/apps/main/core/boot.rb
287
+ - spec/dummy/apps/main/core/main/application.rb
288
+ - spec/dummy/apps/main/core/main/container.rb
289
+ - spec/dummy/apps/main/core/main/import.rb
290
+ - spec/dummy/apps/main/core/main/requests.rb
291
+ - spec/dummy/apps/main/core/main/view.rb
292
+ - spec/dummy/apps/main/lib/main/entities/user.rb
293
+ - spec/dummy/apps/main/lib/main/persistence/repositories/users.rb
294
+ - spec/dummy/apps/main/lib/main/transactions/register_user.rb
295
+ - spec/dummy/apps/main/lib/main/views/users/index.rb
296
+ - spec/dummy/apps/main/log/.gitkeep
297
+ - spec/dummy/apps/main/requests/users.rb
298
+ - spec/dummy/apps/main/web/routes/users.rb
299
+ - spec/dummy/apps/main/web/templates/layouts/app.html.slim
300
+ - spec/dummy/apps/main/web/templates/users/index.html.slim
301
+ - spec/dummy/apps/main/web/templates/users/index/_list.html.slim
302
+ - spec/dummy/apps/main/web/templates/users/index/_list_item.html.slim
303
+ - spec/dummy/bin/console
304
+ - spec/dummy/config.ru
305
+ - spec/dummy/config/application.yml
306
+ - spec/dummy/core/boot.rb
307
+ - spec/dummy/core/dummy/application.rb
308
+ - spec/dummy/core/dummy/container.rb
309
+ - spec/dummy/core/dummy/import.rb
310
+ - spec/dummy/log/.gitkeep
311
+ - spec/dummy/shared/persistence.rb
312
+ - spec/dummy/shared/persistence/db.rb
313
+ - spec/fixtures/test/core/boot/bar.rb
314
+ - spec/fixtures/test/lib/test/dep.rb
315
+ - spec/fixtures/test/lib/test/foo.rb
316
+ - spec/fixtures/test/lib/test/models.rb
317
+ - spec/fixtures/test/lib/test/models/book.rb
318
+ - spec/fixtures/test/lib/test/models/user.rb
319
+ - spec/integration/application_spec.rb
320
+ - spec/request/users_spec.rb
321
+ - spec/spec_helper.rb
322
+ - spec/support/helpers.rb