2011-07-27 61 views
1

我在seeds.rb文件下面的代碼在JRuby中1.6.3軌道3.1項目,我用耙分貝調用:種子的find_by_sql在Rails 3.1

Role.destroy_all 
User.destroy_all 

["admin", "standard"].each do |role| 
    Role.find_or_create_by_name(role) 
end 

if User.find_by_email("[email protected]").nil? 
    user = User.new 
    user.email = "[email protected]" 
    user.password = "Passw0rd" 
    user.password_confirmation = "Passw0rd" 
    user.role = Role.find_by_name("admin") 
    user.save! 
end 

if User.find_by_email("[email protected]").nil? 
    user = User.new 
    user.email = "[email protected]" 
    user.password = "bonjovi5" 
    user.password_confirmation = "bonjovi5" 
    user.role = Role.find_by_name("standard") 
    user.save! 
end 

當我運行耙分貝:種子 - -trace,我得到以下堆棧跟蹤:

** Invoke db:seed (first_time) 
** Invoke db:abort_if_pending_migrations (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Execute db:abort_if_pending_migrations 
** Execute db:seed 
rake aborted! 
wrong number of arguments (3 for 2) 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/activerecord-3.1.0.rc5/lib/active_record/base.rb:470:in `find_by_sql' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/activerecord-3.1.0.rc5/lib/active_record/relation.rb:111:in `to_a' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/activerecord-3.1.0.rc5/lib/active_record/relation.rb:289:in `destroy_all' 
org/jruby/RubyBasicObject.java:1684:in `__send__' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/activerecord-3.1.0.rc5/lib/active_record/base.rb:438:in `destroy_all' 
/Users/paulcowan/projects/leadcapturer/db/seeds.rb:3:in `(root)' 
org/jruby/RubyKernel.java:1073:in `load' 
/Users/paulcowan/projects/leadcapturer/db/seeds.rb:233:in `load' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/activesupport-3.1.0.rc5/lib/active_support/dependencies.rb:223:in `load_dependency' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/activesupport-3.1.0.rc5/lib/active_support/dependencies.rb:639:in `new_constants_in' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/activesupport-3.1.0.rc5/lib/active_support/dependencies.rb:638:in `new_constants_in' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/activesupport-3.1.0.rc5/lib/active_support/dependencies.rb:223:in `load_dependency' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/activesupport-3.1.0.rc5/lib/active_support/dependencies.rb:233:in `load' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/railties-3.1.0.rc5/lib/rails/engine.rb:487:in `load_seed' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/activerecord-3.1.0.rc5/lib/active_record/railties/databases.rake:299:in `(root)' 
org/jruby/RubyProc.java:256:in `call' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/rake-0.9.2/lib/rake/task.rb:205:in `execute' 
org/jruby/RubyArray.java:1603:in `each' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/rake-0.9.2/lib/rake/task.rb:200:in `execute' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/rake-0.9.2/lib/rake/task.rb:158:in `invoke_with_call_chain' 
/Users/paulcowan/.rvm/rubies/jruby-1.6.3/lib/ruby/1.9/monitor.rb:201:in `mon_synchronize' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/rake-0.9.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/rake-0.9.2/lib/rake/task.rb:144:in `invoke' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/rake-0.9.2/lib/rake/application.rb:112:in `invoke_task' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/rake-0.9.2/lib/rake/application.rb:90:in `top_level' 
org/jruby/RubyArray.java:1603:in `each' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/rake-0.9.2/lib/rake/application.rb:90:in `top_level' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/rake-0.9.2/lib/rake/application.rb:84:in `top_level' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/rake-0.9.2/lib/rake/application.rb:62:in `run' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/rake-0.9.2/lib/rake/application.rb:59:in `run' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/gems/rake-0.9.2/bin/rake:32:in `(root)' 
org/jruby/RubyKernel.java:1073:in `load' 
/Users/paulcowan/.rvm/gems/jruby-1.6.3/bin/rake:19:in `(root)' 
Tasks: TOP => db:seed 

這個用來工作,任何人都可以做到底是怎麼回事的任何意義嗎?我的gemfile看起來像這樣:

source 'http://rubygems.org' 
source 'http://gems.engineyard.com' 

gem 'rails',    '~> 3.1.0.rc5' 
gem 'sass-rails' 
gem 'compass', git: 'https://github.com/chriseppstein/compass.git',branch: 'rails31' 
gem 'fancy-buttons' 
gem 'haml' 
gem 'authlogic', :git => 'https://github.com/AndreasWurm/authlogic.git'#, :branch => 'rails3' 
gem 'nokogiri' 
gem 'bundler' 
gem 'resque'    
gem 'resque-meta'   
gem 'jquery-rails'  
gem 'rake'#, '~> 0.8.7'   
gem 'eventmachine' 
gem 'em-websocket' 
gem 'json' 
gem 'coffee-script' 
gem 'uglifier' 

platforms :jruby do 
    gem 'activerecord-jdbc-adapter' 
    gem 'activerecord-jdbcsqlite3-adapter' 
    gem 'jruby-openssl' 
    gem 'jdbc-mysql' 
    gem 'jruby-rack' 
    gem 'warbler' 
    #gem 'glassfish', '1.0.3.dev' 
end 

group :test, :development do 
    platforms :jruby do 
    gem 'jdbc-sqlite3', :require => false 
    gem 'fastercsv' 
    gem 'ruby-debug' 
    end 

    platforms :ruby do 
    gem 'sqlite3-ruby', :require => 'sqlite3' 
    end 

    gem 'mocha' 
    gem 'factory_girl' 
    gem 'fakeweb' 
    gem 'shoulda', :require => 'shoulda' 
end 

任何幫助非常感謝。

+0

你能準確的說出種子行3和233的含義嗎?堆棧跟蹤指向他們,但我不知道他們是誰。謝謝! –

+0

btw是什麼意圖:[「admin」,「standard」]。每個do | role | Role.find_or_create_by_name(role) end它似乎圍繞着這些項目(管理員和標準),併爲每個做一個查找,但沒有做任何事情,它沒有分配給任何東西,直接(=)或追加(<<)? –

+0

從它的外觀我會說你要麼在Rails上找到bug,要麼在JDBC ActiveRecord適配器上找到bug。 –

回答

1

這是當前版本的activerecord-jdbc(正如我們所說的1.1.3)的一個問題。

添加到您的寶石文件,你應該是好去:

gem "activerecord-jdbc-adapter", 
    :git => "https://github.com/nicksieger/activerecord-jdbc-adapter.git" 

不要忘記的ActiveRecord-JDBC 1.1.4釋放時切換回寶玉回購。

+0

我已經做了一段時間了,現在我指着主人。事情似乎更好。 – dagda1