2013-06-10 3 views
0

J'ai de simples rails 2 compositeur app. Je peux rake migrer et graine l'application localement très bien et l'utilisateur admin dans le fichier de démarrage est configuré. Cependant le db ne germe pas sur Heroku. Je reçois l'erreur suivante (avec trace quand je lance - run heroku rake db: --trace setup):rake seed avorté! Impossible de convertir nil en string

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

Voici mon code:

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! 

demande .yml

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

Je suis relativement nouveau sur les rails. L'application a fait germer au début, mais j'ai fait quelques migrations et rollback une fois.

Toute aide très appréciée.

+0

Etes-vous sûr que ENV ['ROLES'] est défini? Au lieu de mettre 'ROLES', essayez ENV ['ROLES']. – davidfurber

+0

Les ROLES ne doivent-ils pas être définis sur '['admin', 'user']' au lieu de '[admin, user]'? – usha

+1

Merci pour les commentaires. Gère pour corriger à l'aide de figaro gem via ce commentaire - https://github.com/RailsApps/rails-stripe-membership-saas/issues/45#issuecomment-11654700 –

Répondre

0

si vous tracez le rôle d'un "db: reset --trace" et ajouter "mettre rôle" comme ceci:.

YAML.load (ENV [ 'RÔLES']) chaque FAISONS | rôle | met rôle

Vous pouvez voir que le premier rôle est admin, mais après le rake db: réinitialisation mettre le message « Le rôle constant uninitialized »

Le problème n'est pas le ENV [ « RÔLES »]!

Questions connexes