Несколько сред работают в среде разработки, но не тестируют - PullRequest
1 голос
/ 24 июля 2011

Это проект Padrino. По какой-то причине я загружаю вторую базу данных в среду разработки, но не в тестовую среду. Это, вероятно, очень специфично для моего проекта, и вряд ли кто-то может помочь ... но я действительно застрял! :)

mongoid.yml

defaults: &defaults
  host: localhost
  port: 27017
  max_retries_on_connection_failure: 2
  databases:
    seeds:
      database: seeds_db
      host: localhost
      port: 27018

development:
  <<: *defaults
  database: db_development

test:
  <<: *defaults
  database: db_test

загружено:

Mongoid.load!(File.dirname(__FILE__) + '/mongoid.yml')

Мой rspec_helper:

PADRINO_ENV = 'test' unless defined?(PADRINO_ENV)
require File.dirname(__FILE__) + "/../config/boot.rb"
RSpec.configure do |conf|
  conf.include Rack::Test::Methods
end

Мой boot.rb:

PADRINO_ENV  = ENV["PADRINO_ENV"] ||= ENV["RACK_ENV"] ||= "development"  unless defined?(PADRINO_ENV)

PADRINO_ROOT = File.expand_path('../..', __FILE__) unless defined?(PADRINO_ROOT)

require 'rubygems' unless defined?(Gem)
require 'bundler'
Bundler.setup
Bundler.require(PADRINO_ENV, :default) 

require 'redis' unless defined?(Redis)
require 'padrino' unless defined?(Padrino)
require 'mongoid' unless defined?(Mongoid)

Dir.glob(File.join(PADRINO_ROOT, 'config/initializers', "*.rb")){ |file| require file}
Dir.glob(File.join(PADRINO_ROOT, 'config/constants', "*.rb")){ |file| require file}

Padrino.before_load do
end

Padrino.after_load do
    Card.load!
    Position.load!
end

Padrino.load!

Но это не работает после того, как я перенес свой проект в Padrino. Я не могу найти в документации ничего, что объясняет почему.

Ответы [ 2 ]

2 голосов
/ 02 августа 2011

Проблема в том, что Rspec использует ENV ["RACK_ENV"] вместо PADRINO_ENV.Поэтому в boot.rb добавьте строку, чтобы определить RACK_ENV для PADRINO_ENV:

PADRINO_ENV = ENV["PADRINO_ENV"] ||= ENV["RACK_ENV"] ||= "development"  unless defined?(PADRINO_ENV)
ENV["RACK_ENV"] = PADRINO_ENV
0 голосов
/ 25 июля 2011

Я нашел кого-то, загружающего свои mongoid.yml таким образом на github, и это, кажется, работает:

config_file = Padrino.root("config", "mongoid.yml")
if File.exists?(config_file)
  settings = YAML.load(ERB.new(File.read(config_file)).result)[Padrino.env.to_s]
  ::Mongoid.from_hash(settings) if settings.present?
end
...