has_defaults 0.4.4 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.github/workflows/test.yml +102 -0
- data/.gitignore +1 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +23 -0
- data/Gemfile +1 -0
- data/Gemfile.3.2.mysql2 +16 -0
- data/{gemfiles/Gemfile.3.2.mysql2.lock → Gemfile.3.2.mysql2.lock} +25 -7
- data/Gemfile.4.2.mysql2 +15 -0
- data/{gemfiles/Gemfile.4.2.mysql2.lock → Gemfile.4.2.mysql2.lock} +33 -21
- data/Gemfile.4.2.pg +15 -0
- data/{gemfiles/Gemfile.4.2.pg.lock → Gemfile.4.2.pg.lock} +17 -5
- data/Gemfile.5.2.mysql2 +15 -0
- data/{gemfiles/Gemfile.5.0.mysql2.lock → Gemfile.5.2.mysql2.lock} +32 -19
- data/Gemfile.5.2.pg +16 -0
- data/Gemfile.5.2.pg.lock +77 -0
- data/Gemfile.6.1.pg +15 -0
- data/Gemfile.6.1.pg.lock +75 -0
- data/Gemfile.lock +1 -0
- data/README.md +30 -25
- data/has_defaults.gemspec +24 -15
- data/lib/has_defaults/version.rb +1 -1
- metadata +54 -79
- data/.travis.yml +0 -56
- data/gemfiles/Gemfile.2.3.mysql2 +0 -13
- data/gemfiles/Gemfile.2.3.mysql2.lock +0 -32
- data/gemfiles/Gemfile.3.2.mysql2 +0 -12
- data/gemfiles/Gemfile.4.2.mysql2 +0 -10
- data/gemfiles/Gemfile.4.2.pg +0 -10
- data/gemfiles/Gemfile.5.0.mysql2 +0 -10
- data/gemfiles/Gemfile.5.0.pg +0 -10
- data/gemfiles/Gemfile.5.0.pg.lock +0 -58
- data/spec/has_defaults/active_record_ext_spec.rb +0 -105
- data/spec/spec_helper.rb +0 -18
- data/spec/support/database.rb +0 -16
- data/spec/support/database.sample.yml +0 -10
- data/spec/support/database.travis.yml +0 -9
- data/spec/support/database.yml +0 -10
- data/spec/support/models.rb +0 -37
data/.travis.yml
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
|
3
|
-
rvm:
|
4
|
-
- 1.8.7
|
5
|
-
- 2.1.8
|
6
|
-
- 2.2.4
|
7
|
-
- 2.3.1
|
8
|
-
|
9
|
-
gemfile:
|
10
|
-
- gemfiles/Gemfile.2.3.mysql2
|
11
|
-
- gemfiles/Gemfile.3.2.mysql2
|
12
|
-
- gemfiles/Gemfile.4.2.mysql2
|
13
|
-
- gemfiles/Gemfile.4.2.pg
|
14
|
-
- gemfiles/Gemfile.5.0.mysql2
|
15
|
-
- gemfiles/Gemfile.5.0.pg
|
16
|
-
|
17
|
-
matrix:
|
18
|
-
exclude:
|
19
|
-
- rvm: 1.8.7
|
20
|
-
gemfile: gemfiles/Gemfile.4.2.mysql2
|
21
|
-
- rvm: 1.8.7
|
22
|
-
gemfile: gemfiles/Gemfile.4.2.pg
|
23
|
-
- rvm: 1.8.7
|
24
|
-
gemfile: gemfiles/Gemfile.5.0.mysql2
|
25
|
-
- rvm: 1.8.7
|
26
|
-
gemfile: gemfiles/Gemfile.5.0.pg
|
27
|
-
- rvm: 2.1.8
|
28
|
-
gemfile: gemfiles/Gemfile.2.3.mysql2
|
29
|
-
- rvm: 2.1.8
|
30
|
-
gemfile: gemfiles/Gemfile.5.0.mysql2
|
31
|
-
- rvm: 2.1.8
|
32
|
-
gemfile: gemfiles/Gemfile.5.0.pg
|
33
|
-
- rvm: 2.2.4
|
34
|
-
gemfile: gemfiles/Gemfile.2.3.mysql2
|
35
|
-
- rvm: 2.3.1
|
36
|
-
gemfile: gemfiles/Gemfile.2.3.mysql2
|
37
|
-
|
38
|
-
install:
|
39
|
-
# Old Travis CI bundler explodes when lockfile version doesn't match recently bumped version
|
40
|
-
- gem install bundler --version='=1.12.5'
|
41
|
-
# This is the default Travis CI install step
|
42
|
-
- bundle install --jobs=3 --retry=3 --deployment --path=${BUNDLE_PATH:-vendor/bundle}
|
43
|
-
|
44
|
-
before_script:
|
45
|
-
- psql -c 'create database has_defaults_test;' -U postgres
|
46
|
-
- mysql -e 'create database IF NOT EXISTS has_defaults_test;'
|
47
|
-
|
48
|
-
script: bundle exec rake gemika:spec
|
49
|
-
|
50
|
-
sudo: false
|
51
|
-
|
52
|
-
cache: bundler
|
53
|
-
|
54
|
-
notifications:
|
55
|
-
email:
|
56
|
-
- fail@makandra.de
|
data/gemfiles/Gemfile.2.3.mysql2
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
source 'https://rubygems.org'
|
2
|
-
|
3
|
-
gem 'activerecord', '=2.3.18'
|
4
|
-
gem 'rspec', '~> 1.3.0'
|
5
|
-
gem 'mysql2', '= 0.2.20'
|
6
|
-
|
7
|
-
gem 'rake', '=10.0.4'
|
8
|
-
|
9
|
-
gem 'i18n', '=0.6.11' # 0.7 no longer builds for Ruby 1.8.7
|
10
|
-
|
11
|
-
gem 'gemika', '>= 0.2.0'
|
12
|
-
gem 'has_defaults', :path => '..'
|
13
|
-
|
@@ -1,32 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: ..
|
3
|
-
specs:
|
4
|
-
has_defaults (0.4.3)
|
5
|
-
activerecord
|
6
|
-
|
7
|
-
GEM
|
8
|
-
remote: https://rubygems.org/
|
9
|
-
specs:
|
10
|
-
activerecord (2.3.18)
|
11
|
-
activesupport (= 2.3.18)
|
12
|
-
activesupport (2.3.18)
|
13
|
-
gemika (0.2.0)
|
14
|
-
i18n (0.6.11)
|
15
|
-
mysql2 (0.2.20)
|
16
|
-
rake (10.0.4)
|
17
|
-
rspec (1.3.2)
|
18
|
-
|
19
|
-
PLATFORMS
|
20
|
-
ruby
|
21
|
-
|
22
|
-
DEPENDENCIES
|
23
|
-
activerecord (= 2.3.18)
|
24
|
-
gemika (>= 0.2.0)
|
25
|
-
has_defaults!
|
26
|
-
i18n (= 0.6.11)
|
27
|
-
mysql2 (= 0.2.20)
|
28
|
-
rake (= 10.0.4)
|
29
|
-
rspec (~> 1.3.0)
|
30
|
-
|
31
|
-
BUNDLED WITH
|
32
|
-
1.12.5
|
data/gemfiles/Gemfile.3.2.mysql2
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
source 'https://rubygems.org'
|
2
|
-
|
3
|
-
gem 'activerecord', '=3.2.22'
|
4
|
-
gem 'rspec', '~> 3.4'
|
5
|
-
gem 'mysql2', '= 0.3.17'
|
6
|
-
|
7
|
-
gem 'rake', '=10.0.4'
|
8
|
-
|
9
|
-
gem 'i18n', '=0.6.11' # 0.7 no longer builds for Ruby 1.8.7
|
10
|
-
|
11
|
-
gem 'gemika', '>= 0.2.0'
|
12
|
-
gem 'has_defaults', :path => '..'
|
data/gemfiles/Gemfile.4.2.mysql2
DELETED
data/gemfiles/Gemfile.4.2.pg
DELETED
data/gemfiles/Gemfile.5.0.mysql2
DELETED
data/gemfiles/Gemfile.5.0.pg
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: ..
|
3
|
-
specs:
|
4
|
-
has_defaults (0.4.3)
|
5
|
-
activerecord
|
6
|
-
|
7
|
-
GEM
|
8
|
-
remote: https://rubygems.org/
|
9
|
-
specs:
|
10
|
-
activemodel (5.0.0.1)
|
11
|
-
activesupport (= 5.0.0.1)
|
12
|
-
activerecord (5.0.0.1)
|
13
|
-
activemodel (= 5.0.0.1)
|
14
|
-
activesupport (= 5.0.0.1)
|
15
|
-
arel (~> 7.0)
|
16
|
-
activesupport (5.0.0.1)
|
17
|
-
concurrent-ruby (~> 1.0, >= 1.0.2)
|
18
|
-
i18n (~> 0.7)
|
19
|
-
minitest (~> 5.1)
|
20
|
-
tzinfo (~> 1.1)
|
21
|
-
arel (7.1.2)
|
22
|
-
concurrent-ruby (1.0.2)
|
23
|
-
diff-lcs (1.2.5)
|
24
|
-
gemika (0.2.0)
|
25
|
-
i18n (0.7.0)
|
26
|
-
minitest (5.9.0)
|
27
|
-
pg (0.18.4)
|
28
|
-
rake (11.3.0)
|
29
|
-
rspec (3.5.0)
|
30
|
-
rspec-core (~> 3.5.0)
|
31
|
-
rspec-expectations (~> 3.5.0)
|
32
|
-
rspec-mocks (~> 3.5.0)
|
33
|
-
rspec-core (3.5.3)
|
34
|
-
rspec-support (~> 3.5.0)
|
35
|
-
rspec-expectations (3.5.0)
|
36
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
37
|
-
rspec-support (~> 3.5.0)
|
38
|
-
rspec-mocks (3.5.0)
|
39
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
40
|
-
rspec-support (~> 3.5.0)
|
41
|
-
rspec-support (3.5.0)
|
42
|
-
thread_safe (0.3.5)
|
43
|
-
tzinfo (1.2.2)
|
44
|
-
thread_safe (~> 0.1)
|
45
|
-
|
46
|
-
PLATFORMS
|
47
|
-
ruby
|
48
|
-
|
49
|
-
DEPENDENCIES
|
50
|
-
activerecord (~> 5.0.0)
|
51
|
-
gemika (>= 0.2.0)
|
52
|
-
has_defaults!
|
53
|
-
pg (~> 0.18.4)
|
54
|
-
rake
|
55
|
-
rspec (~> 3.5)
|
56
|
-
|
57
|
-
BUNDLED WITH
|
58
|
-
1.12.5
|
@@ -1,105 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe HasDefaults::ActiveRecordExt do
|
4
|
-
|
5
|
-
context "given a model with defaults" do
|
6
|
-
|
7
|
-
describe 'initialization' do
|
8
|
-
|
9
|
-
it "should set defaults" do
|
10
|
-
new_donut = Donut.new
|
11
|
-
new_donut.flavor.should == "cream"
|
12
|
-
new_donut.name.should == "Cream"
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should use setters methods to set the defaults" do
|
16
|
-
new_donut = Donut.new
|
17
|
-
new_donut.instance_variable_get('@flavor_setter_called').should == true
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should call procs in the model context when given as defaults" do
|
21
|
-
new_donut = Donut.new
|
22
|
-
new_donut.weight.should == 'a lot'
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should merge multiple has_defaults directives" do
|
26
|
-
new_donut = Donut.new
|
27
|
-
new_donut.flavor.should == "cream"
|
28
|
-
new_donut.maker.should == "Dunkin Donuts"
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'should not assign attributes multiple times when there are multiple has_defaults directives (bugfix)' do
|
32
|
-
Donut.should_receive(:global_health_benefits).once
|
33
|
-
Donut.new
|
34
|
-
end
|
35
|
-
|
36
|
-
it "should set defaults only if attributes are nil" do
|
37
|
-
donut = Donut.new(:flavor => 'vanilla')
|
38
|
-
donut.flavor.should == "vanilla"
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should not set a default on an attribute that is set to an empty string" do
|
42
|
-
donut = Donut.new(:flavor => '')
|
43
|
-
donut.flavor.should == ''
|
44
|
-
end
|
45
|
-
|
46
|
-
it "should use getters methods to check if an attribute is nil" do
|
47
|
-
new_donut = Donut.new
|
48
|
-
new_donut.instance_variable_get('@flavor_getter_called').should == true
|
49
|
-
end
|
50
|
-
|
51
|
-
it "should return default value for an attribute" do
|
52
|
-
Donut.new.default_for(:flavor).should == "cream"
|
53
|
-
end
|
54
|
-
|
55
|
-
it "should not set defaults when loading a saved record" do
|
56
|
-
Donut.create(:flavor => "vanilla")
|
57
|
-
Donut.first.flavor.should == "vanilla"
|
58
|
-
end
|
59
|
-
|
60
|
-
it "should define #after_initialize in Rails 2, but not Rails 3 (this method must be defined so after_initialize callbacks run)" do
|
61
|
-
donut = Donut.new
|
62
|
-
if ActiveRecord::VERSION::MAJOR < 3
|
63
|
-
donut.should respond_to(:after_initialize)
|
64
|
-
else
|
65
|
-
donut.should_not respond_to(:after_initialize)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
it "should not redefine defaults in its superclass" do
|
70
|
-
pastry = Pastry.new
|
71
|
-
pastry.maker.should == 'Mom'
|
72
|
-
pastry.default_for(:maker).should == 'Mom'
|
73
|
-
end
|
74
|
-
|
75
|
-
it "should respect defaults from its superclass" do
|
76
|
-
donut = Donut.create
|
77
|
-
donut.main_ingredient.should == 'flour'
|
78
|
-
donut.maker.should_not == 'Mom'
|
79
|
-
end
|
80
|
-
|
81
|
-
end
|
82
|
-
|
83
|
-
describe '#default_for' do
|
84
|
-
|
85
|
-
it "should return the default value for the given attribute" do
|
86
|
-
Donut.new.default_for(:flavor).should == 'cream'
|
87
|
-
end
|
88
|
-
|
89
|
-
it 'should evaluate the default value if it is a lambda' do
|
90
|
-
Donut.new.default_for(:weight).should == 'a lot'
|
91
|
-
end
|
92
|
-
|
93
|
-
end
|
94
|
-
|
95
|
-
end
|
96
|
-
|
97
|
-
context "given a model without defaults" do
|
98
|
-
|
99
|
-
it "should not define #after_initialize so initialization remains fast" do
|
100
|
-
ModelWithoutDefaults.new.should_not respond_to(:after_initialize)
|
101
|
-
end
|
102
|
-
|
103
|
-
end
|
104
|
-
|
105
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
$: << File.join(File.dirname(__FILE__), "/../../lib" )
|
2
|
-
|
3
|
-
require 'has_defaults'
|
4
|
-
require 'gemika'
|
5
|
-
|
6
|
-
ActiveRecord::Base.default_timezone = :local
|
7
|
-
|
8
|
-
Dir["#{File.dirname(__FILE__)}/support/*.rb"].sort.each {|f| require f}
|
9
|
-
Dir["#{File.dirname(__FILE__)}/shared_examples/*.rb"].sort.each {|f| require f}
|
10
|
-
|
11
|
-
Gemika::RSpec.configure_transactional_examples
|
12
|
-
|
13
|
-
if Gemika::Env.rspec_2_plus?
|
14
|
-
RSpec.configure do |config|
|
15
|
-
config.expect_with(:rspec) { |c| c.syntax = [:should, :expect] }
|
16
|
-
config.mock_with(:rspec) { |c| c.syntax = [:should, :expect] }
|
17
|
-
end
|
18
|
-
end
|
data/spec/support/database.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
Gemika::Database.new.rewrite_schema! do
|
2
|
-
|
3
|
-
create_table :pastries do |t|
|
4
|
-
t.string :type
|
5
|
-
t.string :flavor
|
6
|
-
t.string :name
|
7
|
-
t.string :maker
|
8
|
-
t.string :weight
|
9
|
-
t.string :main_ingredient
|
10
|
-
t.string :health_benefits
|
11
|
-
end
|
12
|
-
|
13
|
-
create_table :model_without_defaults do |t|
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
data/spec/support/database.yml
DELETED
data/spec/support/models.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
class Pastry < ActiveRecord::Base
|
2
|
-
|
3
|
-
has_defaults :main_ingredient => "flour", :maker => "Mom"
|
4
|
-
|
5
|
-
end
|
6
|
-
|
7
|
-
|
8
|
-
class Donut < Pastry
|
9
|
-
|
10
|
-
has_defaults :flavor => "cream", :name => "Cream"
|
11
|
-
has_defaults :maker => lambda { "Dunkin Donuts" }
|
12
|
-
has_defaults :weight => lambda { weigh }
|
13
|
-
has_defaults :health_benefits => lambda { self.class.global_health_benefits }
|
14
|
-
|
15
|
-
def flavor
|
16
|
-
@flavor_getter_called = true
|
17
|
-
read_attribute(:flavor)
|
18
|
-
end
|
19
|
-
|
20
|
-
def flavor=(value)
|
21
|
-
@flavor_setter_called = true
|
22
|
-
write_attribute(:flavor, value)
|
23
|
-
end
|
24
|
-
|
25
|
-
def weigh
|
26
|
-
"a lot"
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.global_health_benefits
|
30
|
-
'none'
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
|
36
|
-
class ModelWithoutDefaults < ActiveRecord::Base
|
37
|
-
end
|