jam*_*ree 1 ruby-on-rails nginx environment-variables
我有一个运行我们的rails应用程序的生产服务器,我们在那里有ENV变量,格式正确.他们出现rails c
但我们有一个问题,让他们在应用程序的实例中被识别.
在ubuntu盒子上运行puma,nginx.每次我们更改.bashrc时需要重新启动什么?这就是我们所做的:1.编辑.bashrc 2. . .bashrc
3.重新启动puma 4.重新启动nginx
仍然没有被认出..但在铁路c中,我们缺少什么?
编辑:/etc/environment
根据其他帖子的建议添加了env变量,这些建议.bashrc
仅适用于特定的shell会话,这可能会产生影响.据说/etc/environment
可供所有用户使用,所以这是我的.仍然有同样的问题:
不要出现在申请表中
export G_DOMAIN=sandboxbaa3b9cca599ff0.mailgun.org
export G_EMAIL=mailgun@sandboxbaa3ba3806d5b499ff0.mailgun.org
export GEL=support@xxxxxx.com
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
Run Code Online (Sandbox Code Playgroud)编辑:
在应用程序我请求G_DOMAIN
和G_EMAIL
简单的HTML(这与dotenv开发工作,一旦推送到生产服务器使用ubuntu服务器不起作用):
ENV TEST<BR>
G_DOMAIN: <%= ENV['G_DOMAIN'] %><br>
G_EMAIL:<%= ENV['G_EMAIL'] %>
Run Code Online (Sandbox Code Playgroud)
但是,可以使用以下env变量(在.bashrc和/ etc/environment中,与我们上面显示的所有变量相同)因为我们的图像工作正常并且在生产时上传到s3而没有任何问题.
production.rb
# Configuration for Amazon S3
:provider => 'AWS',
:aws_access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:aws_secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
Run Code Online (Sandbox Code Playgroud)
edit2:这可能与这个美洲狮问题有关吗?
https://github.com/puma/puma/commit/a0ba9f1c8342c9a66c36f39e99aeaabf830b741c
我也有这样的问题.对我来说,这只有在我添加一个新的环境变量时才会发生.
通过这篇文章和一些更多的谷歌搜索,我已经明白,restart
Puma 的命令(通过gem capistrano-puma
)可能看不到新的环境变量,因为进程在重新启动时自行分叉而不是自杀并再次启动(这是一个在部署期间保持服务器响应的一部分).
链接的帖子建议使用仅存储在生产服务器上的YAML文件(读取:不在源代码管理中),而不是依赖于部署用户的环境变量.这是你如何实现它:
config/application.rb
文件中:config.before_configuration do
env_file = File.join(Rails.root, 'config', 'local_env.yml')
YAML.load(File.open(env_file)).each do |key, value|
ENV[key.to_s] = value
end if File.exists?(env_file)
end
Run Code Online (Sandbox Code Playgroud)
config/deploy.rb
) desc "Link shared files"
task :symlink_config_files do
on roles(:app) do
symlinks = {
"#{shared_path}/config/local_env.yml" => "#{release_path}/config/local_env.yml"
}
execute symlinks.map{|from, to| "ln -nfs #{from} #{to}"}.join(" && ")
end
end
before 'deploy:assets:precompile', :symlink_config_files
Run Code Online (Sandbox Code Playgroud)
1
,您的Rails应用程序会将您在服务器的Capistrano目录./shared/config/local_env.yml
文件中定义的任何键加载到ENV
哈希中,这将在其他配置文件之前secrets.yml
或之前database.yml
加载.代码2
确保./shared/config/
服务器上的文件在每次部署时都current/config/
符号链接到(1
预期代码所在的位置).示例local_env.yml:
SECRET_API_KEY_DONT_TELL: 12345abc6789
OTHER_SECRET_SHH: hello
Run Code Online (Sandbox Code Playgroud)
示例secrets.yml
:
production:
secret_api_key: <%= ENV["SECRET_API_KEY_DONT_TELL"] %>
other_secret: <%= ENV["OTHER_SECRET_SHH"] %>
Run Code Online (Sandbox Code Playgroud)
通过不使用环境变量,这将保证找到您的环境变量.似乎是一种解决方法,但基本上我们只是将ENV
对象用作方便的全局变量.
(capistrano语法可能有点老了,但是这里的Rails 5中有什么用呢...但是我确实需要从链接的帖子中更新一些东西才能让它适合我并且我刚开始使用它capistrano.编辑欢迎)
归档时间: |
|
查看次数: |
1093 次 |
最近记录: |