Figaro没有在application.yml

时间:2015-07-18 17:17:08

标签: ruby-on-rails environment figaro-ruby

我正在开发Ruby on Rails应用程序。我最近更新到最后一个Rails版本(4.2.3),当我运行rake test时,我发现它擦除了我的开发数据库。我正在使用Figaro gem来声明我的所有环境变量。

这是我的application.yml文件

#
# == Database
#
db_host    : 'localhost'
db_username: 'root'
db_password: 'root'

development:
  db_name: 'database-dev' # Not found by Figaro
test:
  db_name: 'database-test' # Not found by Figaro

我的database.yml文件

default: &default
  adapter: mysql2
  pool: 5
  timeout: 5000
  username: <%= Figaro.env.db_username %>
  password: <%= Figaro.env.db_password %>
  database: <%= Figaro.env.db_name %>

  development:
    <<: *default

  test:
    <<: *default

如果我将db_name置于development键下,我会收到消息no database selected,但如果我将其移至上一级则可以正常工作。但是rake test不使用test键来加载数据库配置并擦除我的开发数据。

以前工作得很好,我不明白出了什么问题。 谢谢你的帮助。

我的项目

  • Rails 4.2.3
  • Ruby 2.2.2
  • Figaro 1.1.1

1 个答案:

答案 0 :(得分:0)

您能否展示一下您是如何运行测试规范的?你有什么环境设置(在config / environment目录下)?另外,你运行的是什么版本的RSpec(你是否安装了rspec-rails gem)?

您的spec_helper.rb文件(或使用RSpec 3.x rails_helper.rb)应该在顶部显示此行:

ENV['RAILS_ENV'] ||= 'test'

如果没有,请尝试添加它。此外,您可以尝试添加用于调试的print语句:

puts ENV['RAILS_ENV']

一般情况下,这应该始终有效,但它很丑陋(你不应该这样做):

RAILS_ENV=test bundle exec rspec spec