2013-06-10 10 views
0

나는 간단한 레일 2 작곡가 앱을 가지고 있습니다. 나는 레이크 마이그레이션 및 시드 로컬로 응용 프로그램 시드 및 관리자 파일을 시드 파일에 있습니다. 그러나 db는 Heroku에 뿌리지 않습니다. (내가 실행할 때 추적에 - Heroku가 실행 레이크 DB : 설정 --trace) : 나는 다음과 같은 오류가 발생합니다갈퀴 씨앗이 중단되었습니다! nil을 문자열로 변환 할 수 없습니다.

seed.rb

# This file should contain all the record creation needed to seed the database with its  default values. 
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup). 
# 
# Examples: 
# 
# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }]) 
# Mayor.create(name: 'Emanuel', city: cities.first) 
# Environment variables (ENV['...']) are set in the file config/application.yml. 
# See http://railsapps.github.io/rails-environment-variables.html 
puts 'ROLES' 
YAML.load(ENV['ROLES']).each do |role| 
    Role.find_or_create_by_name({ :name => role }, :without_protection => true) 
    puts 'role: ' << role 
end 
puts 'DEFAULT USERS' 
user = User.find_or_create_by_email :name => ENV['ADMIN_NAME'].dup, :email =>   ENV['ADMIN_EMAIL'].dup, :password => ENV['ADMIN_PASSWORD'].dup, :password_confirmation =>   ENV['ADMIN_PASSWORD'].dup 
puts 'user: ' << user.name 
user.add_role :admin 
user.save! 

응용 프로그램 : 이것은 내 코드입니다

** Execute db:abort_if_pending_migrations 
ROLES 
rake aborted! 
can't convert nil into String 

을 .yml

GMAIL_USERNAME: Your_Username 
GMAIL_PASSWORD: Your_Password 
ADMIN_NAME: First User 
ADMIN_EMAIL: [email protected] 
ADMIN_PASSWORD: changeme 
ROLES: [admin, user] 

저는 레일에 상당히 익숙합니다. 앱은 초기에 시드를 했었지만 한 번 마이그레이션하고 롤백했습니다.

도움을 주시면 감사하겠습니다.

+0

ENV [ 'ROLES']이 (가) 설정되어 있습니까? 'ROLES'를 넣는 대신 ENV [ 'ROLES']를 넣으십시오. – davidfurber

+0

ROLES를'[admin, user]'대신'[ 'admin', 'user']'로 설정해야합니까? – usha

+1

의견에 감사드립니다. 이 댓글을 통해 figaro gem을 사용하여 문제를 해결하십시오. https://github.com/RailsApps/rails-stripe-membership-saas/issues/45#issuecomment-11654700 –

답변

0

당신이 가진 역할 추적 경우 "DB를 : --trace 재설정"을 추가 이와 같은 "역할 넣어".

YAML.load (ENV를 [의 역할 ']) 각각이 할 | 역할 |

그래서 문제가 ENV [의 역할 ']하지 않은 메시지를 "초기화되지 않은 일정한 역할"을 넣어 다시 : 는 당신이 첫 번째 역할은 admin입니다 것을 볼 수 있지만 레이크 dB 후 수 역할을

을 넣습니다!