我创建了一个名为sample_app的新Rails应用程序,我使用postgresql作为我的db(我已经创建了一个postgresql用户名和密码)。我使用此设置指南https://gorails.com/setup/ubuntu/16.04
所以我运行这个命令 set dep [$AdminConfig getid /Deployment:my-ear/]
set depObject [$AdminConfig showAttribute $dep deployedObject]
set classldr [$AdminConfig showAttribute $depObject classloader]
$AdminConfig showall $classldr
$AdminConfig modify $classldr {{mode PARENT_LAST}}
$AdminConfig save
$AdminConfig showall $classldr
。然后我必须编辑rails new sample_app -d postgresql
以匹配我刚刚创建的postgresql用户名和密码的用户名和密码。但我不想硬编码因为我将使用git。
我从数字海洋找到了这个教程,建议使用:
config/database.yml
这是正确的代码吗?如果是这样,因为我的应用程序名为sample_app,我的代码应该是?
username: <%= ENV['APPNAME_DATABASE_USER'] %>
password: <%= ENV['APPNAME_DATABASE_PASSWORD'] %>
如果这不是正确的,你能帮助我吗?谢谢!
答案 0 :(得分:7)
您可以通过多种方式设置环境变量。
以下是其中两个,
选项一:通过yml文件设置ENV变量
创建文件config/local_env.yml
:
<强>配置/ local_env.yml:强>
SAMPLE_APP_DATABASE_USER: 'your username'
SAMPLE_APP_DATABASE_PASSWORD: '******'
以上是您将使用的名称, ENV['SAMPLE_APP_DATABASE_USER']
。 这些可以是您希望的名称。您可以使用任何名称,但我们应该在ENV参考中使用相同的名称。
将其添加到gitignore:
/config/local_env.yml
更改application.rb
<强> 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
代码打开config / local_env.yml文件,读取每个键/值对,并设置环境变量。
使用环境变量:
username: <%= ENV['SAMPLE_APP_DATABASE_USER'] %>
password: <%= ENV['SAMPLE_APP_DATABASE_PASSWORD'] %>
选项二:使用费加罗宝石
gem利用Ruby设置环境变量以及读取它们的能力。 gem会在Rails应用程序中配置其他任何内容之前读取config/application.yml
文件并设置环境变量。
以下是如何使用它。在Gemfile中,添加:
<强> gem 'figaro'
强>
并运行 bundle install
gem提供了一个生成器:
<强> $ bundle exec figaro install
强>
生成器会创建 config/application.yml
文件并修改.gitignore file
以防止将文件签入git存储库。
您可以将环境变量作为键/值对添加到config/application.yml
:
SAMPLE_APP_DATABASE_USER: 'your username'
SAMPLE_APP_DATABASE_PASSWORD: '******'
环境变量将作为ENV变量在应用程序的任何位置使用:
<强> ENV["SAMPLE_APP_DATABASE_USER"]
强>
答案 1 :(得分:3)
你可以随便叫它......
username: <%= ENV['CARROTS'] %>
password: <%= ENV['BEANS'] %>
您只需确保部署脚本正确设置变量CARROTS和BEANS。
答案 2 :(得分:1)
试试这个宝石dotenv-rails
将此添加到Gemfile:
gem 'dotenv-rails', :groups => [:development, :test]
捆绑它。现在,在您应用的目录中创建一个.env
文件,其中包含以下内容:
SAMPLE_APP_DATABASE_USER: "devuser"
SAMPLE_APP_DATABASE_PASSWORD: "devuser"
重启服务器你很高兴。启动应用程序时会导出这些变量,您可以在database.yml
文件
username: <%= ENV['SAMPLE_APP_DATABASE_USER'] %>
password: <%= ENV['SAMPLE_APP_DATABASE_PASSWORD'] %>
阅读dotenv-rails documentation了解更多信息