Question

Ceci est un projet Padrino. Pour une raison quelconque, je reçois ma deuxième base de données chargée dans l'environnement de développement, mais pas l'environnement de test. Ceci est probablement très spécifique à mon projet, et il est l'aide de quelqu'un peut improbable ... mais je suis vraiment coincé! :)

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

chargé de:

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

Mon 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

Mon 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!

Mais cela ne fonctionne pas après avoir porté mon projet Padrino. Je ne trouve rien dans la documentation qui explique pourquoi.

Était-ce utile?

La solution

Problème que Rspec utilisation ENV [ "RACK_ENV"], au lieu PADRINO_ENV. Ainsi, dans la ligne boot.rb ajouter pour définir RACK_ENV à PADRINO_ENV:

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

Autres conseils

J'ai trouvé quelqu'un leur chargement mongoid.yml ainsi sur GitHub, et cela semble fonctionner:

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top