Lee*_*Lee 10 yaml ruby-on-rails rubymine postgresql-9.3
我正在尝试使用RubyMine(7.0.4)与PostgreSQL(9.3)建立一个简单的rails应用程序(4.2.0,ruby 2.2.0); 我正计划部署到Heroku.
我遇到两件事有问题:
首先(也是更重要的),我的ENV变量在我的database.yml文件中不起作用.
其次,RubyMine根本不识别该文件中的erb.
default: &default
adapter: postgresql
encoding: unicode
pool: 5
username: <%= ENV['DB_USERNAME'] %>
password: <%= ENV['DB_PASSWORD'] %>
development:
<<: *default
database: my_app_development
test:
<<: *default
database: my_app_test
production:
<<: *default
# database: my_app_production
# username: <%= ENV['DB_USERNAME'] %>
# password: <%= ENV['DB_PASSWORD'] %>
url: <%= ENV['DATABASE_URL'] %>
Run Code Online (Sandbox Code Playgroud)
(我正在使用dotenv-rails gem):
DB_USERNAME=my_app
DB_PASSWORD=password
Run Code Online (Sandbox Code Playgroud)
编辑:我也试过了
export DB_USERNAME=myapp, DB_USERNAME="my_app",和 export DB_USERNAME="myapp"...
group :development, :test do
...
# Shim to load environment variables from .env into ENV in development.
gem 'dotenv-rails'
end
Run Code Online (Sandbox Code Playgroud)
我在RubyMine中遇到一个错误,说我无法连接到我的数据库,因为
指定的用户名和密码组合被拒绝:致命:用户"%= ...的密码验证失败
在终端中,我得到PG::ConnectionBad: FATAL: password authentication failed for user "lee"(我的本地用户名),虽然显式传递变量(rake db:create DB_USERNAME=...)工作.
我尝试将用户名和密码直接放入文件中:
default: &default
adapter: postgresql
encoding: unicode
pool: 5
username: my_app
password: password
Run Code Online (Sandbox Code Playgroud)
成功!由于问题不是我的用户名和密码,我决定尝试一些基本的嵌入式ruby:
default: &default
adapter: postgresql
encoding: unicode
pool: 5
username: <%= "my_app" %>
password: <%= "password" %>
Run Code Online (Sandbox Code Playgroud)
RubyMine没有运气 - FATAL: password authentication failed for user "%=....但是,这确实适用rake db:create于终端.
所以,我的两个问题是:
显然,在滑轨4.2,加载次序是不同的(Dotenv用于后右被装载class Application < Rails::Application在application.rb当按照文档).
通过在我的application.rb文件中放置两行来加载Dotenv来解决这个问题:
...
Bundler.require(*Rails.groups)
##### START ADDED CODE #####
Dotenv::Railtie.load
HOSTNAME = ENV['HOSTNAME']
##### END ADDED CODE #####
module MyApp
class Application < Rails::Application
...
Run Code Online (Sandbox Code Playgroud)
我仍在试图弄清楚如何使RubyMine识别database.yml中的嵌入式ruby,尽管现在该应用程序通过命令行正常工作.
这可能是加载问题。将 dotenv gem 放在 pg gem 之前。
| 归档时间: |
|
| 查看次数: |
2247 次 |
| 最近记录: |