Rails Daemon reste en mode développement
-
20-08-2019 - |
Question
J'ai une application Rails avec un démon qui vérifie les nouveaux messages dans une boîte aux lettres. J'utilise le plug-in Fetcher pour cette tâche. Le fichier démon ressemble à ceci:
#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/../config/environment.rb'
class MailFetcherDaemon < Daemon::Base
@config = YAML.load_file("#{RAILS_ROOT}/config/mail.yml")
@config = @config['production'].to_options
@sleep_time = @config.delete(:sleep_time) || 20
def self.start
puts "Starting MailFetcherDaemon"
# Add your own receiver object below
@fetcher = Fetcher.create({:receiver => MailProcessor}.merge(@config))
...
Je l'ai donc saisi les nouveaux courriels, les analyser et créer une ressource à partir des données analysées. Mais lorsqu'il essaie de sauvegarder la ressource, une exception est levée. En effet, l'environnement de développement est automatiquement attribué au script. Donc, il utilise ma configuration de base de données de développement au lieu de l'environnement de production (qui est la configuration que je veux).
J'ai essayé de démarrer le script avec:
rails-root$ RAILS_ENV=production; script/mail_fetcher start
mais en vain. Il semble que lorsque je charge le fichier environment.rb, il se limite par défaut à l'environnement de développement et charge development.rb ainsi que la configuration de la base de développement à partir de database.yml.
Des pensées? Suggestions?
Merci
La solution
Cela fonctionne dans mon application, la seule différence que je vois est l'absence de point-virgule
RAILS_ENV=production script/mail_fetcher start
Autres conseils
Alors quand vous dites
RAILS_ENV=production; script/mail_fetcher start
voulez-vous dire
#!/bin/bash
export RAILS_ENV=production
cd /path/to/rails_root
./script/mail_fetcher start
Vous pouvez essayer d'ajouter ceci à votre script:
ENV['RAILS_ENV'] = "production"
Vous pouvez également l'ajouter à la ligne de commande.
#!/bin/bash
cd /path/to/rails_root
./script/mail_fetcher start RAILS_ENV=production