activerecord-tablefree 3.0.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.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rspec +1 -0
- data/.travis.yml +10 -0
- data/Appraisals +11 -0
- data/Gemfile +8 -0
- data/LICENSE.txt +25 -0
- data/README.md +175 -0
- data/Rakefile +48 -0
- data/activerecord-tablefree.gemspec +46 -0
- data/features/basic_integration.feature +16 -0
- data/features/step_definitions/rails_steps.rb +141 -0
- data/features/step_definitions/tablefree.rb +37 -0
- data/features/step_definitions/web_steps.rb +140 -0
- data/features/support/env.rb +15 -0
- data/features/support/paths.rb +28 -0
- data/features/support/rails.rb +52 -0
- data/features/support/selectors.rb +19 -0
- data/gemfiles/rails50.gemfile +11 -0
- data/gemfiles/rails51.gemfile +11 -0
- data/init.rb +4 -0
- data/lib/activerecord-tablefree.rb +318 -0
- data/lib/activerecord-tablefree/version.rb +7 -0
- data/spec/lib/activerecord-tablefree_spec.rb +284 -0
- data/spec/spec_helper.rb +2 -0
- metadata +300 -0
@@ -0,0 +1,284 @@
|
|
1
|
+
require 'sqlite3'
|
2
|
+
require 'active_record'
|
3
|
+
require 'activerecord-tablefree'
|
4
|
+
require 'logger'
|
5
|
+
require 'spec_helper'
|
6
|
+
|
7
|
+
def make_tablefree_model(database = nil, nested = nil)
|
8
|
+
eval <<EOCLASS
|
9
|
+
class Chair < ActiveRecord::Base
|
10
|
+
#{database ? "has_no_table :database => :#{database}" : 'has_no_table'}
|
11
|
+
column :id, :integer
|
12
|
+
column :name, :string
|
13
|
+
#{if nested
|
14
|
+
'
|
15
|
+
has_many :arm_rests
|
16
|
+
accepts_nested_attributes_for :arm_rests
|
17
|
+
'
|
18
|
+
end}
|
19
|
+
end
|
20
|
+
EOCLASS
|
21
|
+
if nested
|
22
|
+
eval <<EOCLASS
|
23
|
+
class ArmRest < ActiveRecord::Base
|
24
|
+
#{database ? "has_no_table :database => :#{database}" : 'has_no_table'}
|
25
|
+
belongs_to :chair
|
26
|
+
column :id, :integer
|
27
|
+
column :chair_id, :integer
|
28
|
+
column :name, :string
|
29
|
+
end
|
30
|
+
EOCLASS
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def remove_models
|
35
|
+
Object.send(:remove_const, :Chair) rescue nil
|
36
|
+
Object.send(:remove_const, :ArmRest) rescue nil
|
37
|
+
end
|
38
|
+
|
39
|
+
ActiveRecord::Base.logger = Logger.new(STDERR)
|
40
|
+
ActiveRecord::Base.logger.level = Logger::Severity::UNKNOWN
|
41
|
+
|
42
|
+
shared_examples_for "an active record instance" do
|
43
|
+
it { should respond_to :id }
|
44
|
+
it { should respond_to :id= }
|
45
|
+
it { should respond_to :name }
|
46
|
+
it { should respond_to :name= }
|
47
|
+
it { should respond_to :update_attributes }
|
48
|
+
describe "#attributes=" do
|
49
|
+
before(:example){ subject.attributes=({:name => 'Jarl Friis'}) }
|
50
|
+
it "assign attributes" do
|
51
|
+
expect(subject.name).to eq 'Jarl Friis'
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
shared_examples_for "a nested active record" do
|
57
|
+
describe "conllection#build" do
|
58
|
+
specify do
|
59
|
+
expect(subject.arm_rests.build({:name => 'nice arm_rest'})).to be_an_instance_of(ArmRest)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
describe "conllection#<<" do
|
63
|
+
specify do
|
64
|
+
expect(subject.arm_rests << ArmRest.new({:name => 'nice arm_rest'})).to have(1).items
|
65
|
+
end
|
66
|
+
describe 'appending two children' do
|
67
|
+
before(:example) do
|
68
|
+
subject.arm_rests << [ArmRest.new({:name => 'left'}),
|
69
|
+
ArmRest.new({:name => 'right'})]
|
70
|
+
end
|
71
|
+
it "assigns nested attributes" do
|
72
|
+
expect(subject.arm_rests[0].name).to eq 'left'
|
73
|
+
expect(subject.arm_rests[1].name).to eq 'right'
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
describe "#attributes=" do
|
78
|
+
before(:example){ subject.attributes=({ :name => 'Jarl Friis',
|
79
|
+
:arm_rests_attributes => [
|
80
|
+
{:name => 'left'},
|
81
|
+
{:name => 'right'}
|
82
|
+
]
|
83
|
+
}) }
|
84
|
+
it "assigns attributes" do
|
85
|
+
expect(subject.name).to eq 'Jarl Friis'
|
86
|
+
end
|
87
|
+
it "assigns nested attributes" do
|
88
|
+
expect(subject.arm_rests[0].name).to eq 'left'
|
89
|
+
expect(subject.arm_rests[1].name).to eq 'right'
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
shared_examples_for "a tablefree model with fail_fast" do
|
95
|
+
case ActiveRecord::VERSION::MAJOR
|
96
|
+
when 3
|
97
|
+
describe "#all" do
|
98
|
+
it "raises ActiveRecord::Tablefree::NoDatabase" do
|
99
|
+
expect { subject.all }.to raise_exception(ActiveRecord::Tablefree::NoDatabase)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
when 4
|
103
|
+
describe "#all" do
|
104
|
+
it "raises ActiveRecord::Tablefree::NoDatabase" do
|
105
|
+
expect { subject.all }.to_not raise_exception
|
106
|
+
end
|
107
|
+
end
|
108
|
+
describe "#all[]" do
|
109
|
+
it "raises ActiveRecord::Tablefree::NoDatabase" do
|
110
|
+
expect { subject.all[0] }.to raise_exception(ActiveRecord::Tablefree::NoDatabase)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
describe "#create" do
|
115
|
+
it "raises ActiveRecord::Tablefree::NoDatabase" do
|
116
|
+
expect { subject.create(:name => 'Jarl') }.to raise_exception(ActiveRecord::Tablefree::NoDatabase)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
describe "#destroy" do
|
120
|
+
it "raises ActiveRecord::Tablefree::NoDatabase" do
|
121
|
+
expect { subject.destroy(1) }.to raise_exception(ActiveRecord::Tablefree::NoDatabase)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
describe "#destroy_all" do
|
125
|
+
it "raises ActiveRecord::Tablefree::NoDatabase" do
|
126
|
+
expect { subject.destroy_all }.to raise_exception(ActiveRecord::Tablefree::NoDatabase)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
shared_examples_for "a tablefree model instance with fail_fast" do
|
132
|
+
it_behaves_like "an active record instance"
|
133
|
+
describe "#save" do
|
134
|
+
it "raises ActiveRecord::Tablefree::NoDatabase" do
|
135
|
+
expect { subject.save }.to raise_exception(ActiveRecord::Tablefree::NoDatabase)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
describe "#save!" do
|
139
|
+
it "raises ActiveRecord::Tablefree::NoDatabase" do
|
140
|
+
expect { subject.save! }.to raise_exception(ActiveRecord::Tablefree::NoDatabase)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
describe "#reload" do
|
144
|
+
it "raises ActiveRecord::Tablefree::NoDatabase" do
|
145
|
+
expect { subject.reload }.to raise_exception(ActiveRecord::Tablefree::NoDatabase)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
describe "#update_attributes" do
|
149
|
+
it "raises ActiveRecord::Tablefree::NoDatabase" do
|
150
|
+
expect { subject.update_attributes(:name => 'Jarl') }.to raise_exception(StandardError)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
describe "Tablefree model with fail_fast" do
|
156
|
+
before(:context) {make_tablefree_model(nil, nil)}
|
157
|
+
after(:context){ remove_models }
|
158
|
+
subject { Chair }
|
159
|
+
it_behaves_like "a tablefree model with fail_fast"
|
160
|
+
describe "instance" do
|
161
|
+
subject { Chair.new(:name => 'Jarl') }
|
162
|
+
it_behaves_like "a tablefree model instance with fail_fast"
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
describe "Tablefree nested with fail_fast" do
|
167
|
+
before(:context) {make_tablefree_model(nil, true)}
|
168
|
+
after(:context){ remove_models }
|
169
|
+
subject { Chair }
|
170
|
+
it_behaves_like "a tablefree model with fail_fast"
|
171
|
+
describe "#new" do
|
172
|
+
it "accepts attributes" do
|
173
|
+
expect(subject.new(:name => "Jarl")).to be_an_instance_of(subject)
|
174
|
+
end
|
175
|
+
it "assign attributes" do
|
176
|
+
expect(subject.new(:name => "Jarl").name).to eq "Jarl"
|
177
|
+
end
|
178
|
+
end
|
179
|
+
describe "instance" do
|
180
|
+
subject { Chair.new(:name => 'Jarl') }
|
181
|
+
it_behaves_like "a tablefree model instance with fail_fast"
|
182
|
+
it_behaves_like "a nested active record"
|
183
|
+
describe "#update_attributes" do
|
184
|
+
it "raises ActiveRecord::Tablefree::NoDatabase" do
|
185
|
+
expect do
|
186
|
+
subject.update_attributes(:arm_rests => {:name => 'nice arm_rest'})
|
187
|
+
end.to raise_exception(StandardError)
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
191
|
+
describe "instance with nested models" do
|
192
|
+
subject do
|
193
|
+
Chair.new(:name => "Jarl",
|
194
|
+
:arm_rests => [
|
195
|
+
ArmRest.new(:name => 'left'),
|
196
|
+
ArmRest.new(:name => 'right'),
|
197
|
+
])
|
198
|
+
end
|
199
|
+
it {should be_an_instance_of(Chair) }
|
200
|
+
it {should have(2).arm_rests }
|
201
|
+
end
|
202
|
+
describe "instance with nested attributes" do
|
203
|
+
subject do
|
204
|
+
Chair.new(:name => "Jarl",
|
205
|
+
:arm_rests_attributes => [
|
206
|
+
{:name => 'left'},
|
207
|
+
{:name => 'right'},
|
208
|
+
])
|
209
|
+
end
|
210
|
+
it {should be_an_instance_of(Chair)}
|
211
|
+
it {should have(2).arm_rests }
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
##
|
216
|
+
## Succeeding database
|
217
|
+
##
|
218
|
+
shared_examples_for "a model with succeeding database" do
|
219
|
+
describe "#all" do
|
220
|
+
specify { expect(subject.all).to eq []}
|
221
|
+
end
|
222
|
+
describe "#create" do
|
223
|
+
specify { expect(subject.create(:name => 'Jarl')).to be_an_instance_of(subject) }
|
224
|
+
end
|
225
|
+
describe "#destroy" do
|
226
|
+
specify { expect(subject.destroy(1)).to be_an_instance_of(subject) }
|
227
|
+
end
|
228
|
+
describe "#destroy_all" do
|
229
|
+
specify { expect(subject.destroy_all).to eq [] }
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
shared_examples_for "an instance with succeeding database" do
|
234
|
+
it_behaves_like "an active record instance"
|
235
|
+
|
236
|
+
describe "#save" do
|
237
|
+
specify { expect(subject.save).to eq true }
|
238
|
+
end
|
239
|
+
describe "#save!" do
|
240
|
+
specify { expect(subject.save!).to eq true }
|
241
|
+
end
|
242
|
+
describe "#reload" do
|
243
|
+
before { subject.save! }
|
244
|
+
specify { expect(subject.reload).to eq subject }
|
245
|
+
end
|
246
|
+
describe "#update_attributes" do
|
247
|
+
specify { expect(subject.update_attributes(:name => 'Jarl Friis')).to eq true }
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
describe "ActiveRecord with real database" do
|
252
|
+
##This is only here to ensure that the shared examples are actually behaving like a real database.
|
253
|
+
before(:context) do
|
254
|
+
FileUtils.mkdir_p "tmp"
|
255
|
+
ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => 'tmp/test.db')
|
256
|
+
ActiveRecord::Base.connection.execute("drop table if exists chairs")
|
257
|
+
ActiveRecord::Base.connection.execute("create table chairs (id INTEGER PRIMARY KEY, name TEXT )")
|
258
|
+
|
259
|
+
class Chair < ActiveRecord::Base
|
260
|
+
end
|
261
|
+
end
|
262
|
+
after(:context) do
|
263
|
+
remove_models
|
264
|
+
ActiveRecord::Base.clear_all_connections!
|
265
|
+
end
|
266
|
+
|
267
|
+
subject { Chair }
|
268
|
+
it_behaves_like "a model with succeeding database"
|
269
|
+
describe "instance" do
|
270
|
+
subject { Chair.new(:name => 'Jarl') }
|
271
|
+
it_behaves_like "an instance with succeeding database"
|
272
|
+
end
|
273
|
+
end
|
274
|
+
|
275
|
+
describe "Tablefree model with succeeding database" do
|
276
|
+
before(:context) { make_tablefree_model(:pretend_success, nil) }
|
277
|
+
after(:context){ remove_models }
|
278
|
+
subject { Chair }
|
279
|
+
it_behaves_like "a model with succeeding database"
|
280
|
+
describe "instance" do
|
281
|
+
subject { Chair.new(:name => 'Jarl') }
|
282
|
+
it_behaves_like "an instance with succeeding database"
|
283
|
+
end
|
284
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,300 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: activerecord-tablefree
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 3.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jarl Friis
|
8
|
+
- Kenneth Kalmer
|
9
|
+
- Michal Zima
|
10
|
+
- Peter Boling
|
11
|
+
autorequire:
|
12
|
+
bindir: bin
|
13
|
+
cert_chain: []
|
14
|
+
date: 2017-11-14 00:00:00.000000000 Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: activerecord
|
18
|
+
requirement: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 3.0.0
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 3.0.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: bundler
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
requirements:
|
34
|
+
- - "~>"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 1.16.0
|
37
|
+
type: :development
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - "~>"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.16.0
|
44
|
+
- !ruby/object:Gem::Dependency
|
45
|
+
name: rake
|
46
|
+
requirement: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - "~>"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '0'
|
51
|
+
- - ">"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
- - ">"
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: sqlite3
|
66
|
+
requirement: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - "~>"
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '1.3'
|
71
|
+
type: :development
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - "~>"
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '1.3'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: appraisal
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - "~>"
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '1.0'
|
85
|
+
type: :development
|
86
|
+
prerelease: false
|
87
|
+
version_requirements: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - "~>"
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '1.0'
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: cucumber
|
94
|
+
requirement: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - "~>"
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '1.1'
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - "~>"
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '1.1'
|
106
|
+
- !ruby/object:Gem::Dependency
|
107
|
+
name: rspec
|
108
|
+
requirement: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - "~>"
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '3.1'
|
113
|
+
type: :development
|
114
|
+
prerelease: false
|
115
|
+
version_requirements: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '3.1'
|
120
|
+
- !ruby/object:Gem::Dependency
|
121
|
+
name: rspec-collection_matchers
|
122
|
+
requirement: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - "~>"
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '1.0'
|
127
|
+
type: :development
|
128
|
+
prerelease: false
|
129
|
+
version_requirements: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - "~>"
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '1.0'
|
134
|
+
- !ruby/object:Gem::Dependency
|
135
|
+
name: aruba
|
136
|
+
requirement: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - "~>"
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0.5'
|
141
|
+
type: :development
|
142
|
+
prerelease: false
|
143
|
+
version_requirements: !ruby/object:Gem::Requirement
|
144
|
+
requirements:
|
145
|
+
- - "~>"
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
version: '0.5'
|
148
|
+
- !ruby/object:Gem::Dependency
|
149
|
+
name: nokogiri
|
150
|
+
requirement: !ruby/object:Gem::Requirement
|
151
|
+
requirements:
|
152
|
+
- - "~>"
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: '1.0'
|
155
|
+
type: :development
|
156
|
+
prerelease: false
|
157
|
+
version_requirements: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
159
|
+
- - "~>"
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: '1.0'
|
162
|
+
- !ruby/object:Gem::Dependency
|
163
|
+
name: capybara
|
164
|
+
requirement: !ruby/object:Gem::Requirement
|
165
|
+
requirements:
|
166
|
+
- - "~>"
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: '0.0'
|
169
|
+
type: :development
|
170
|
+
prerelease: false
|
171
|
+
version_requirements: !ruby/object:Gem::Requirement
|
172
|
+
requirements:
|
173
|
+
- - "~>"
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '0.0'
|
176
|
+
- !ruby/object:Gem::Dependency
|
177
|
+
name: gem-release
|
178
|
+
requirement: !ruby/object:Gem::Requirement
|
179
|
+
requirements:
|
180
|
+
- - "~>"
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: 0.7.4
|
183
|
+
type: :development
|
184
|
+
prerelease: false
|
185
|
+
version_requirements: !ruby/object:Gem::Requirement
|
186
|
+
requirements:
|
187
|
+
- - "~>"
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: 0.7.4
|
190
|
+
- !ruby/object:Gem::Dependency
|
191
|
+
name: wwtd
|
192
|
+
requirement: !ruby/object:Gem::Requirement
|
193
|
+
requirements:
|
194
|
+
- - ">="
|
195
|
+
- !ruby/object:Gem::Version
|
196
|
+
version: '0'
|
197
|
+
type: :development
|
198
|
+
prerelease: false
|
199
|
+
version_requirements: !ruby/object:Gem::Requirement
|
200
|
+
requirements:
|
201
|
+
- - ">="
|
202
|
+
- !ruby/object:Gem::Version
|
203
|
+
version: '0'
|
204
|
+
- !ruby/object:Gem::Dependency
|
205
|
+
name: rails
|
206
|
+
requirement: !ruby/object:Gem::Requirement
|
207
|
+
requirements:
|
208
|
+
- - ">="
|
209
|
+
- !ruby/object:Gem::Version
|
210
|
+
version: '0'
|
211
|
+
type: :development
|
212
|
+
prerelease: false
|
213
|
+
version_requirements: !ruby/object:Gem::Requirement
|
214
|
+
requirements:
|
215
|
+
- - ">="
|
216
|
+
- !ruby/object:Gem::Version
|
217
|
+
version: '0'
|
218
|
+
- !ruby/object:Gem::Dependency
|
219
|
+
name: listen
|
220
|
+
requirement: !ruby/object:Gem::Requirement
|
221
|
+
requirements:
|
222
|
+
- - ">="
|
223
|
+
- !ruby/object:Gem::Version
|
224
|
+
version: '0'
|
225
|
+
type: :development
|
226
|
+
prerelease: false
|
227
|
+
version_requirements: !ruby/object:Gem::Requirement
|
228
|
+
requirements:
|
229
|
+
- - ">="
|
230
|
+
- !ruby/object:Gem::Version
|
231
|
+
version: '0'
|
232
|
+
description: ActiveRecord Tablefree Models provides a simple mixin for creating models
|
233
|
+
that are not bound to the database. This approach is useful for taking advantage
|
234
|
+
of the features of ActiveRecord such as validation, relationships, etc.
|
235
|
+
email:
|
236
|
+
- jarl@softace.dk
|
237
|
+
- peter.boling@gmail.com
|
238
|
+
executables: []
|
239
|
+
extensions: []
|
240
|
+
extra_rdoc_files: []
|
241
|
+
files:
|
242
|
+
- ".gitignore"
|
243
|
+
- ".rspec"
|
244
|
+
- ".travis.yml"
|
245
|
+
- Appraisals
|
246
|
+
- Gemfile
|
247
|
+
- LICENSE.txt
|
248
|
+
- README.md
|
249
|
+
- Rakefile
|
250
|
+
- activerecord-tablefree.gemspec
|
251
|
+
- features/basic_integration.feature
|
252
|
+
- features/step_definitions/rails_steps.rb
|
253
|
+
- features/step_definitions/tablefree.rb
|
254
|
+
- features/step_definitions/web_steps.rb
|
255
|
+
- features/support/env.rb
|
256
|
+
- features/support/paths.rb
|
257
|
+
- features/support/rails.rb
|
258
|
+
- features/support/selectors.rb
|
259
|
+
- gemfiles/rails50.gemfile
|
260
|
+
- gemfiles/rails51.gemfile
|
261
|
+
- init.rb
|
262
|
+
- lib/activerecord-tablefree.rb
|
263
|
+
- lib/activerecord-tablefree/version.rb
|
264
|
+
- spec/lib/activerecord-tablefree_spec.rb
|
265
|
+
- spec/spec_helper.rb
|
266
|
+
homepage: https://github.com/boltthreads/activerecord-tablefree
|
267
|
+
licenses:
|
268
|
+
- MIT
|
269
|
+
metadata: {}
|
270
|
+
post_install_message:
|
271
|
+
rdoc_options: []
|
272
|
+
require_paths:
|
273
|
+
- lib
|
274
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - ">="
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: '0'
|
279
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
280
|
+
requirements:
|
281
|
+
- - ">="
|
282
|
+
- !ruby/object:Gem::Version
|
283
|
+
version: '0'
|
284
|
+
requirements: []
|
285
|
+
rubyforge_project:
|
286
|
+
rubygems_version: 2.6.14
|
287
|
+
signing_key:
|
288
|
+
specification_version: 4
|
289
|
+
summary: A library for implementing tablefree ActiveRecord models
|
290
|
+
test_files:
|
291
|
+
- features/basic_integration.feature
|
292
|
+
- features/step_definitions/rails_steps.rb
|
293
|
+
- features/step_definitions/tablefree.rb
|
294
|
+
- features/step_definitions/web_steps.rb
|
295
|
+
- features/support/env.rb
|
296
|
+
- features/support/paths.rb
|
297
|
+
- features/support/rails.rb
|
298
|
+
- features/support/selectors.rb
|
299
|
+
- spec/lib/activerecord-tablefree_spec.rb
|
300
|
+
- spec/spec_helper.rb
|