Ruby on rails “希罗库”;无法将nil转换为字符串";
我正在使用RubyonRails4,并试图部署到heroku。然而,当我试着跑的时候 “heroku run rake db:migrate”,我得到了以下错误Ruby on rails “希罗库”;无法将nil转换为字符串";,ruby-on-rails,heroku,devise,null,Ruby On Rails,Heroku,Devise,Null,我正在使用RubyonRails4,并试图部署到heroku。然而,当我试着跑的时候 “heroku run rake db:migrate”,我得到了以下错误 Running `rake db:migrate` attached to terminal... up, run.8591 rake aborted! TypeError: can't convert nil into String /app/config/initializers/devise.rb:13:in `+' /app/
Running `rake db:migrate` attached to terminal... up, run.8591
rake aborted!
TypeError: can't convert nil into String
/app/config/initializers/devise.rb:13:in `+'
/app/config/initializers/devise.rb:13:in `block in <top (required)>'
/app/vendor/bundle/ruby/1.9.1/bundler/gems/devise-66db52ce31b5/lib/devise.rb:292:in `setup'
/app/config/initializers/devise.rb:3:in `<top (required)>'
/app/vendor/bundle/ruby/1.9.1/gems/activesupport- 4.1.4/lib/active_support/dependencies.rb:241:in `load'
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:241:in `block in load'
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:232:in `load_dependency'
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:241:in `load'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/engine.rb:648:in `block in load_config_initializer'
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-4.1.4/lib/active_support/notifications.rb:161:in `instrument'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/engine.rb:647:in `load_config_initializer'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/engine.rb:612:in `block (2 levels) in <class:Engine>'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/engine.rb:611:in `each'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/engine.rb:611:in `block in <class:Engine>'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/initializable.rb:30:in `instance_exec'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/initializable.rb:30:in `run'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/initializable.rb:55:in `block in run_initializers'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/initializable.rb:44:in `each'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/initializable.rb:44:in `tsort_each_child'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/initializable.rb:54:in `run_initializers'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/application.rb:300:in `initialize!'
/app/config/environment.rb:5:in `<top (required)>'
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:247:in `require'
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:247:in `block in require'
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:232:in `load_dependency'
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:247:in `require'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/application.rb:276:in `require_environment!'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/application.rb:379:in `block in run_tasks_blocks'
Tasks: TOP => db:migrate => environment
(See full trace by running task with --trace)
这是database.yml
default: &default
adapter: postgresql
encoding: unicode
pool: 5
timeout: 5000
development:
<<: *default
database: myapp_development
test:
<<: *default
database: myapp_test
production:
<<: *default
database: myapp_production
请帮助:(当您部署到heroku时,它需要
域名
,对于开发,您已将其设置为字符串:example.com
在生产中它希望在变量中设置域名:
,而heroku上的域名设置与本地计算机上的域名设置不同
要在heroku中使用env变量,您可以使用。当您部署到heroku时,需要
域名
,对于开发,您已将其设置为字符串:example.com
在生产中它希望在变量中设置域名:
,而heroku上的域名设置与本地计算机上的域名设置不同
要使用heroku中的env变量,您可以使用。要从另一个角度来看问题,我看了以下答案:
设计 我不知道Heroku是否需要你设置你的域名(我已经有一段时间没有在那里部署了),但是不管怎样,我想说的问题更多的是
设计
:
app/config/initializers/designe.rb:13:in`+'
当您为Desive分配电子邮件时,似乎出现了错误,您在此处执行的操作如下:
#config/initializers/devise.rb
config.mailer_sender = 'no-reply@' + Rails.application.secrets.domain_name
您遇到的问题是,您已经在机密中为开发环境设置了域名
;并且在生产中为域名
使用了ENV
变量
--
环境变量
要解决这个问题,您需要确保在Heroku上设置了ENV
变量
ENV(环境)变量位于操作系统上&允许
应用程序访问一组(通常是机密)数据,这些数据可以
在整个应用程序中使用。ENV变量通常用于
存储敏感数据(例如API
键),主要是为了将其解耦
来自应用程序本身的数据(使系统更安全)
您的域名设置似乎没有环境变量。为此,您最好使用Heroku的CLI(命令行界面)来:
为了给你们另一个视角,我看了这个答案:
设计
我不知道Heroku是否需要你设置你的域名(我已经有一段时间没有在那里部署了),但是不管怎样,我想说的问题更多的是设计
:
app/config/initializers/designe.rb:13:in`+'
当您为Desive分配电子邮件时,似乎出现了错误,您在此处执行的操作如下:
#config/initializers/devise.rb
config.mailer_sender = 'no-reply@' + Rails.application.secrets.domain_name
您遇到的问题是,您已经在机密中为开发环境设置了域名
;并且在生产中为域名
使用了ENV
变量
--
环境变量
要解决这个问题,您需要确保在Heroku上设置了ENV
变量
ENV(环境)变量位于操作系统上&允许
应用程序访问一组(通常是机密)数据,这些数据可以
在整个应用程序中使用。ENV变量通常用于
存储敏感数据(例如API
键),主要是为了将其解耦
来自应用程序本身的数据(使系统更安全)
您的域名设置似乎没有环境变量。为此,您最好使用Heroku的CLI(命令行界面)来:
我也有同样的问题。我在secret.yml中设置了DOMAIN\u NAME
等,但由于我想保持凭据的私密性,该文件被git忽略。因此Heroku找不到这些配置值
使用figaro gem似乎是解决这个问题的好方法,但我不想再添加一个gem并创建一个新的yml文件
我所做的是直接设置Heroku环境变量,它起作用了:
$ heroku config:add GMAIL_USERNAME='myname@gmail.com' GMAIL_PASSWORD='mypassword'
$ heroku config:add DOMAIN_NAME='example.com'
我也有同样的问题。我在secret.yml中设置了DOMAIN\u NAME
等,但由于我想保持凭据的私密性,该文件被git忽略。因此Heroku找不到这些配置值
使用figaro gem似乎是解决这个问题的好方法,但我不想再添加一个gem并创建一个新的yml文件
我所做的是直接设置Heroku环境变量,它起作用了:
$ heroku config:add GMAIL_USERNAME='myname@gmail.com' GMAIL_PASSWORD='mypassword'
$ heroku config:add DOMAIN_NAME='example.com'
我猜Rails.application.secrets.domain\u name
为零…我想看看你应该如何设置它。我猜Rails.application.secrets.domain\u name
为零…我想看看你应该如何设置它。我已经完成了gem“figaro”->“Rails生成figaro:install”->“rake figaro:heroku”以下内容.但即使我这样做了,我仍然会得到同样的错误:(您可以尝试将
变量更改为纯字符串,如mydomain.com
并部署到heroku,如果您现在没有收到错误,这意味着您没有正确设置figaro。另外,请查找heorku figrao插件,如果我没有弄错的话,您需要为此添加一个插件。heroku何时需要域名
?@RichP埃克,你是在问我吗?任何知道答案的人:我已经完成了gem“figaro”->“rails生成figaro:install”->“rake figaro:heroku”following“。但即使我这么做了,我仍然会遇到同样的错误:(您可以尝试将
变量更改为纯字符串,如mydomain.com
并部署到heroku,如果您现在没有收到错误,这意味着您没有正确设置figaro。如果我是n,还可以查找heorku figrao插件
#config/initializers/devise.rb
config.mailer_sender = 'no-reply@' + Rails.application.secrets.domain_name
$ heroku config:set DOMAIN_NAME=your_domain.com
$ heroku config:add GMAIL_USERNAME='myname@gmail.com' GMAIL_PASSWORD='mypassword'
$ heroku config:add DOMAIN_NAME='example.com'