[英]unable to deploy rails app to heroku
my rails app works in development mode on my mac. 我的Rails应用程序可以在Mac上的开发模式下工作。 Whrn i try to compile into heroku i get errors on the command line 我尝试将其编译为heroku时,在命令行中出现错误
Cleaning up the bundler cache.
Removing bundler (1.3.2)
-----> Writing config/database.yml to read from DATABASE_URL
-----> Preparing app for Rails asset pipeline
Running: rake assets:precompile
rake aborted!
undefined method `[]' for nil:NilClass
/tmp/build_9afd2a8f-0be9-427c-82f9-5431cf3a30fc/config/initializers/devise.rb:234:in `block in <top (required)>'
/tmp/build_9afd2a8f-0be9-427c-82f9-5431cf3a30fc/vendor/bundle/ruby/2.0.0/gems/devise-3.1.2/lib/devise.rb:276:in `setup'
/
/tmp/build_9afd2a8f-0be9-427c-82f9-5431cf3a30fc/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0.rc1/lib/rails/engine.rb:609:in `bl
/tmp/build_9afd2a8f-0be9-427c-82f9-5431cf3a30fc/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0.rc1/lib/rails/application.rb:214:in `initialize!'
/tmp/build_9afd2a8f-0be9-427c-82f9-5431cf3a30fc/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0.rc1/lib/rails/railtie/configurable.rb:30:in `method_missing'
/tmp/build_9afd2a8f-0be9-427c-82f9-5431cf3a30fc/config/environment.rb:5:in `<top (required)>'
/tmp/build_9afd2a8f-0be9-427c-82f9-5431cf3a30fc/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0.rc1/lib/active_support/dependencies.rb:228:in `require'
/tmp/build_9afd2a8f-0be9-427c-82f9-5431cf3a30fc/vendor/bundle/ruby/2.0.0/gems/activesupport-
Tasks: TOP => environment
(See full trace by running task with --trace)
!
! Precompiling assets failed.
!
! Push rejected, failed to compile Ruby app
checked my devise.rb the only line i added was 检查了我的devise.rb我唯一添加的行是
config.omniauth :facebook, FACEBOOK_CONFIG['facebook_api_key'], FACEBOOK_CONFIG['facebook_api_secret'], scope: "email, publish_actions"
and this is my gemfile - as you can see i have the production and development information included
group :development, :test do
gem 'sqlite3'
end
group :production do
gem 'pg'
gem 'rails_12factor'
end
as advised devise 230-238 根据建议设计230-238
# ==> OmniAuth
# Add a new OmniAuth provider. Check the wiki for more information on setting
# up on your models and hooks.
config.omniauth :facebook, FACEBOOK_CONFIG['facebook_api_key'], FACEBOOK_CONFIG['facebook_api_secret'], scope: "email, publish_actions"
# ==> Warden configuration
# If you want to use other strategies, that are not supported by Devise, or
# change the failure app, you can configure them inside the config.warden block.
You probably want to stop using this magick FACEBOOK_CONFIG
variable and start using environment variables for heroku 您可能想停止使用此magick FACEBOOK_CONFIG
变量,并开始将环境变量用于heroku
config.omniauth :facebook, ENV['FACEBOOK_API_KEY'], ENV['FACEBOOK_API_SECRET'], scope: "email, publish_actions"
to get this ENV working on development easier please check: https://github.com/bkeepers/dotenv or https://github.com/laserlemon/figaro 为了使该ENV可以更轻松地进行开发,请检查: https : //github.com/bkeepers/dotenv或https://github.com/laserlemon/figaro
Obviously FACEBOOK_CONFIG
that you're trying to use is nil
. 显然,您要使用的FACEBOOK_CONFIG
为nil
。
First you have to set the two environment variables in your Heroku account : 首先,您必须在Heroku帐户中设置两个环境变量 :
$ heroku config:set FACEBOOK_API_KEY=your-key-here
$ heroku config:set FACEBOOK_API_SECRET=your-secret-here
Then verify these are set correctly: 然后验证这些设置是否正确:
$ heroku config:get FACEBOOK_API_KEY
$ heroku config:get FACEBOOK_API_SECRET
Finally update the device.rb
file as follows: 最后,如下更新device.rb
文件:
config.omniauth :facebook, ENV['FACEBOOK_API_KEY'], ENV['FACEBOOK_API_SECRET'], scope: "email, publish_actions"
Now should be good to go. 现在应该很好。
It looks like the issue is with Devise. 看来问题出在Devise。 the error says 错误说
undefined method `[]' for nil:NilClass
If you look at the next line down it is coming from. 如果您查看下一行,它来自哪里。
config/initializers/devise.rb:234
So the error is on line 234 in config/initializers/devise.rb. 因此,错误位于config / initializers / devise.rb中的第234行。
Run the following command on your mac. 在Mac上运行以下命令。
bundle exec rake assets:precompile
If you don't get the same error, then you know that it is an issue with your production environment. 如果没有得到相同的错误,则说明您的生产环境存在问题。
Can you add what you have on line config/initializers/devise.rb:234 您可以在config / initializers / devise.rb:234上添加您的内容吗
Just update your facebook.yml file with same information for production. 只需使用相同的信息更新您的facebook.yml文件即可进行生产。 I guess you only have development. 我想你只有发展。
/config/facebook.yml /config/facebook.yml
development:
facebook_api_key: copy_from_here
facebook_api_secret: copy_2_from_here
production:
facebook_api_key: paste_to_here
facebook_api_secret: paste_2_here
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.