Ruby on rails 4 Rails 4:如何使用RVM在Ubuntu14.04上添加环境变量?

Ruby on rails 4 Rails 4:如何使用RVM在Ubuntu14.04上添加环境变量?,ruby-on-rails-4,nginx,capistrano,passenger,ubuntu-14.04,Ruby On Rails 4,Nginx,Capistrano,Passenger,Ubuntu 14.04,现在我正试图将我的Ruby on Rails应用程序部署到运行Ubuntu的WindowsAzure上的虚拟机上,但我可以修复如下所述的取消设置环境变量错误 我已经在.bashrc中添加了变量,现在在/etc/environment中,但错误是相同的: App 1227 stderr: [ 2015-10-06 04:10:57.3814 1352/0x9020d38(Worker 1) utils.rb:86 ]: *** Exception RuntimeError in Rack appl

现在我正试图将我的Ruby on Rails应用程序部署到运行Ubuntu的WindowsAzure上的虚拟机上,但我可以修复如下所述的取消设置环境变量错误

我已经在
.bashrc
中添加了变量,现在在
/etc/environment
中,但错误是相同的:

App 1227 stderr: [ 2015-10-06 04:10:57.3814 1352/0x9020d38(Worker 1) utils.rb:86 ]: *** Exception RuntimeError in Rack application object (Missing `secret_to$
App 1227 stderr: from /home/deploy/apps/matching_people/shared/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/application.rb:534:in `validate_secret_$
App 1227 stderr:        from /home/deploy/apps/matching_people/shared/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/application.rb:246:in `env_config'
App 1227 stderr:        from /home/deploy/apps/matching_people/shared/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/engine.rb:514:in `call'
App 1227 stderr:        from /home/deploy/apps/matching_people/shared/bundle/ruby/2.2.0/gems/railties-4.2.4/lib/rails/application.rb:165:in `call'
App 1227 stderr:        from /usr/lib/ruby/vendor_ruby/phusion_passenger/rack/thread_handler_extension.rb:94:in `process_request'
App 1227 stderr:        from /usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler/thread_handler.rb:151:in `accept_and_process_next_request'
App 1227 stderr:        from /usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler/thread_handler.rb:112:in `main_loop'
App 1227 stderr:        from /usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler.rb:415:in `block (3 levels) in start_threads'
App 1227 stderr:        from /usr/lib/ruby/vendor_ruby/phusion_passenger/utils.rb:112:in `block in create_thread_and_abort_on_exception'
[ 2015-10-06 04:10:57.3819 988/b5efeb40 age/Cor/Req/Utils.cpp:95 ]: [Client 1-1] Sending 502 response: application did not send a complete response
这是我的
sudo nano/etc/environment
文件:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

export SECRET_KEY_BASE=2da0d3f0bfd7b9b05110bfad512f42df2d2bb2ef715c4e831caba96a9c0b2141fbfa718dff2f5daf916cd70a70afd1f24df49884c561fbbaf364b36652b2c7d1
ruby -e 'p ENV["SECRET_KEY_BASE"]'

export MATCH_PEOPLE_DATABASE_PASSWORD=2015deployer
ruby -e 'p ENV["MATCH_PEOPLE_DATABASE_PASSWORD"]'
当我运行
echo$SECRET\u KEY\u BASE
echo$MATCH\u PEOPLE\u DATABASE\u PASSWORD
时,我得到了准确的数据

deploy@vmw-ubuserver:~$ echo $SECRET_KEY_BASE
2da0d3f0bfd7b9b05110bfad512f42df2d2bb2ef715c4e831caba96a9c0b2141fbfa718dff2f5daf916cd70a70afd1f24df49884c561fbbaf364b36652b2c7d1

deploy@vmw-ubuserver:~$ echo $MATCH_PEOPLE_DATABASE_PASSWORD
2015deployer
但我仍然在生产中遇到同样的错误,我在Ubuntu 14.04上使用RVM、Capistrano、Passenger和NGINX

My database.yml:

production:
  adapter: mysql2
  encoding: utf8
  pool: 5
  host: localhost
  database: matchpeople_production
  username: deployer
  password: <%= ENV['MATCH_PEOPLE_DATABASE_PASSWORD'] %>
生产:
适配器:mysql2
编码:utf8
游泳池:5
主机:本地主机
数据库:matchpeople\u生产
用户名:部署者
密码:
我的秘密。yml:

# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
  secret_token: <%= ENV["SECRET_KEY_BASE"] %>
#不要在存储库中保留生产机密,
#而是从环境中读取值。
制作:
机密密钥库:
秘密令牌:

有什么帮助吗?

根据我的经验,Ruby RVM的secrets.yml中不需要秘密令牌

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
添加如下内容

export GEM_PATH=/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global
export GEM_HOME=/usr/local/rvm/gems/ruby-1.9.3-p551

祝你好运

寻找并寻找正确答案我尝试了太多的选择,但都没有成功

所以,当我在测试谷歌上的一些配置时,我突然找到了解决方案

这很简单,只是:

  • 添加下一行:

    export SECRET_KEY_BASE=3aa7e349bh345h245hi23452345h234ih52i3u45h$
    export MATCH_PEOPLE_DATABASE_PASSWORD=your_pass_here
    
    # Uncomment these lines and restart the server to validate if the variables are read correctly
    #ruby -e 'p ENV["SECRET_KEY_BASE"]'
    #ruby -e 'p ENV["MATCH_PEOPLE_DATABASE_PASSWORD"]'
    
在以下文件的末尾:

  • sudo nano~/.bash_简介
  • sudo nano/etc/environment
  • 如果需要,您可以取消注释
    ~/.bash_profile
    中的最后两行,然后重新启动服务器,再次登录时,您将看到promt前的环境变量值,如下图所示

    我建议您对这些行保持注释,这样做只是为了验证,然后再次注释它们

    如果您有任何问题,请留言


    希望有用。

    好的,非常感谢!我会试着这么做,告诉你发生了什么事@瓦尔Asensio@Lexynux我找到了另一个解决方案为了解决这个问题,你需要做的就是在你的bash_配置文件和环境变量中添加一些变量。我将在未来几天内发布!你曾经发布过@Lexynux吗?@OneHoopyFrood你可以看到上面的答案!我希望这是有用的,人们通常在这里与有问题的人联系,以帮助这个社区。不是通过推特
    export SECRET_KEY_BASE=3aa7e349bh345h245hi23452345h234ih52i3u45h$
    export MATCH_PEOPLE_DATABASE_PASSWORD=your_pass_here
    
    # Uncomment these lines and restart the server to validate if the variables are read correctly
    #ruby -e 'p ENV["SECRET_KEY_BASE"]'
    #ruby -e 'p ENV["MATCH_PEOPLE_DATABASE_PASSWORD"]'