Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails “希罗库”;无法将nil转换为字符串";_Ruby On Rails_Heroku_Devise_Null - Fatal编程技术网

Ruby on rails “希罗库”;无法将nil转换为字符串";

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/

我正在使用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/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'