Reputation: 3035
I looked into the similar questions and they do not apply here:
Braindead simple row update. Same result if I run it as a migration or a seed.
class AddValuesForPlanApiQuotaDaily < ActiveRecord::Migration
def self.up
p = Plan.find(10)
p.api_quota_daily = 3000
p.save!
end
end
Or from db/seeds.rb:
p = Plan.find(10)
if p.api_quota_daily.nil?
p.api_quota_daily = 3000
p.save!
end
Result:
$ rake db:seed --trace
** Invoke db:seed (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:seed
rake aborted!
stack level too deep
Trace:
/home/fun/dev/company/project/vendor/plugins/deadlock_retry/lib/deadlock_retry.rb:45:in `transaction_without_deadlock_handling'
/home/fun/dev/company/project/vendor/plugins/deadlock_retry/lib/deadlock_retry.rb:45:in `transaction'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.18/lib/active_record/transactions.rb:200:in `save!'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.18/lib/active_record/transactions.rb:208:in `rollback_active_record_state!'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.18/lib/active_record/transactions.rb:200:in `save!'
/home/fun/dev/company/project/db/seeds.rb:8
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.18/lib/active_support/dependencies.rb:171:in `load_without_new_constant_marking'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.18/lib/active_support/dependencies.rb:171:in `load'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.18/lib/active_support/dependencies.rb:547:in `new_constants_in'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.18/lib/active_support/dependencies.rb:171:in `load'
/usr/lib/ruby/gems/1.8/gems/rails-2.3.18/lib/tasks/databases.rake:211
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain'
/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in `invoke'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/bin/rake:31
/usr/bin/rake:19:in `load'
/usr/bin/rake:19
Cannot upgrade rake or start using bundler for this project.
Upvotes: 1
Views: 608
Reputation: 688
Unfortunately, I cannot speak from experience, but I wonder if the contents of this blog can help you:
http://dalibornasevic.com/posts/5-ruby-stack-level-too-deep-systemstackerror
Basically:
ulimit -a | grep 'stack size'
and
ulimit -s <some reasonably larger number>
Hope that helps.
Of course, I am assuming that you are doing this on a Unix-like system.
Upvotes: 1
Reputation: 3035
Another option which actually words, do it with raw SQL in a migration:
class AddValuesToPlanApiQuotas < ActiveRecord::Migration
def self.up
plan_id_api_limits = {
10 => 3000,
20 => 3000,
30 => 5000,
40 => 10000,
50 => 20000,
60 => 35000
}
plan_id_api_limits.each do |k,v|
query = "UPDATE plans set api_quota_daily = #{v} where id=#{k}"
ActiveRecord::Base.connection.execute(query);
end
end
end
I just cannot apparently use ActiveRecord
inside rake migrations or seed tasks at 0.8.7.
Upvotes: 2
Reputation: 3035
This is horrible practice, but I am out of time on the task and cannot spend today researching issues with rake.
ruby script/runner db/seeds.rb
Ta da.
Upvotes: 0