2012-11-16 4 views
0

잠시 동안 레이크 테스트로 오류가 발생 했으므로 이제는 데이터로 데이터를 저장하려고합니다. 비슷한 오류와 내가 어디로 잘못 가고 있는지 정말 모르겠다. 나는 내 users.yml 파일과 관련이 있는지 확실하지 않습니다레일 레이크 테스트 - "비밀번호를 정수로 변환 할 수 없습니다"비밀번호

[pears:]$ rake db:fixtures:load --trace 
** Invoke db:fixtures:load (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Invoke db:load_config (first_time) 
** Execute db:load_config 
** Execute db:fixtures:load 
rake aborted! 
can't convert Symbol into Integer 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/bcrypt-ruby-3.0.1/lib/bcrypt.rb:160:in `[]' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/bcrypt-ruby-3.0.1/lib/bcrypt.rb:160:in `create' 
(erb):7:in `<main>' 
/Users/jake/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/erb.rb:838:in `eval' 
/Users/jake/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/erb.rb:838:in `result' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.8/lib/active_record/fixtures/file.rb:51:in `render' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.8/lib/active_record/fixtures/file.rb:43:in `rows' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.8/lib/active_record/fixtures/file.rb:29:in `each' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.8/lib/active_record/fixtures.rb:670:in `block (2 levels) in read_fixture_files' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.8/lib/active_record/fixtures/file.rb:20:in `open' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.8/lib/active_record/fixtures.rb:669:in `block in read_fixture_files' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.8/lib/active_record/fixtures.rb:668:in `each' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.8/lib/active_record/fixtures.rb:668:in `read_fixture_files' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.8/lib/active_record/fixtures.rb:548:in `initialize' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.8/lib/active_record/fixtures.rb:482:in `new' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.8/lib/active_record/fixtures.rb:482:in `block (2 levels) in create_fixtures' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.8/lib/active_record/fixtures.rb:479:in `map' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.8/lib/active_record/fixtures.rb:479:in `block in create_fixtures' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:232:in `disable_referential_integrity' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.8/lib/active_record/fixtures.rb:476:in `create_fixtures' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:322:in `block (4 levels) in <top (required)>' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:321:in `each' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:321:in `block (3 levels) in <top (required)>' 
/Users/jake/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call' 
/Users/jake/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute' 
/Users/jake/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each' 
/Users/jake/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute' 
/Users/jake/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain' 
/Users/jake/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/Users/jake/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
/Users/jake/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke' 
/Users/jake/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task' 
/Users/jake/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level' 
/Users/jake/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each' 
/Users/jake/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level' 
/Users/jake/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/Users/jake/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level' 
/Users/jake/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run' 
/Users/jake/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/Users/jake/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run' 
/Users/jake/.rvm/gems/[email protected]/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>' 
/Users/jake/.rvm/gems/[email protected]/bin/rake:19:in `load' 
/Users/jake/.rvm/gems/[email protected]/bin/rake:19:in `<main>' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/bin/ruby_noexec_wrapper:14:in `eval' 
/Users/jake/.rvm/gems/ruby-1.9.3-p286/bin/ruby_noexec_wrapper:14:in `<main>' 
Tasks: TOP => db:fixtures:load 

...

# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html 

<% SALT = "NaCl" unless defined?(SALT) %> 

one: 
    email: [email protected] 
    hashed_password: <%= BCrypt::Password.create('fresh', SALT) %> 
    salt: <%= SALT %> 

two: 
    email: [email protected] 
    hashed_password: <%= BCrypt::Password.create('fresh', SALT) %> 
    salt: <%= SALT %> 

정말 확실하지 어디에 솔루션을 찾고 시작합니다. 감사!

+0

당신이 놓치고있는 '<% = '소금 줄에. 그럴 수도 있습니다. –

+0

나는 그것이 그랬 으면 좋았을 텐데,하지만 그것이 효과가있는 것 같지 않았습니다. = ( – jake

+0

그리고 SALT가 "NaCL"로 설정되어 있고 아직 정의되지 않았 음을 확신하십니까? –

답변

0

BCrypt의 사용이

BCrypt::Password.create('fresh', SALT) 

는 워드 프로세서 말 ... 유효하지 않습니다

# @password = BCrypt::Password.create("my secret", :cost => 13) 
    def create(secret, options = { :cost => BCrypt::Engine::DEFAULT_COST }) 
    raise ArgumentError if options[:cost] > 31 
    Password.new(BCrypt::Engine.hash_secret(secret, BCrypt::Engine.generate_salt(options[:cost]), options[:cost])) 
    end 

올바른 사용 :

BCrypt::Password.create('fresh', :cost => 15) # any number less than 15 
+0

다음에 무엇을해야할지 모르겠습니다. 'create ('fresh '+ SALT)'? – jake

+0

yes,'create ('신선 '+ SALT)' 누구도 궁금해하고있는 것은 A Rails를 사용한 웹 개발은 잘못되었습니다. 하나에서 sha 암호화를 사용하고 다른 암호화에서 bcrypt를 사용해서는 안됩니다. 여기 링크 : http://railsforum.com/viewtopic.php?id=23490 – jake

관련 문제