Pregunta

Tengo una aplicación Rails con un daemon que revisa un buzón en busca de nuevos correos electrónicos. Estoy utilizando el complemento Fetcher para esta tarea. El archivo daemon se ve así:

#!/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))
  ...

Así que tengo que tomar los nuevos correos electrónicos, analizarlos y crear un recurso a partir de los datos analizados. Pero cuando intenta guardar el recurso, se produce una excepción. Esto se debe a que el script se asigna automáticamente al entorno de desarrollo. Entonces, está usando la configuración de mi base de datos de desarrollo en lugar del entorno de producción (que es la configuración que quiero).

He intentado iniciar el script con:

 rails-root$ RAILS_ENV=production; script/mail_fetcher start

pero fue en vano. Parece que cuando cargo el archivo environment.rb simplemente se establece de manera predeterminada en el entorno de desarrollo y carga development.rb y la configuración de la base de datos de desarrollo desde database.yml.

Pensamientos? ¿Sugerencias?

Gracias

¿Fue útil?

Solución

Esto está funcionando en mi aplicación, la única diferencia que veo es que no hay punto y coma

RAILS_ENV=production script/mail_fetcher start

Otros consejos

Entonces cuando dices

RAILS_ENV=production; script/mail_fetcher start

quieres decir

#!/bin/bash
export RAILS_ENV=production
cd /path/to/rails_root
./script/mail_fetcher start

Puede intentar agregar esto a su script:

ENV['RAILS_ENV'] = "production"

Alternativamente, podría funcionar agregarlo a la línea de comando.

#!/bin/bash
cd /path/to/rails_root
./script/mail_fetcher start RAILS_ENV=production
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top