2011-06-10 11 views
6

No puedo ejecutar el comando ar_sendmail desde mi terminal. No creo haber perdido su configuración. A continuación está mi código;comando ar_sendmail no funciona con ruby ​​1.9.2

 
development.rb 
++++++++++++++++++++++++++++++++++++++++++++++++++++ 
ActionMailer::Base.delivery_method = :activerecord 
ActionMailer::Base.smtp_settings = { 
    :address => "smtp.gmail.com", 
    :port => 25, 
    :domain => "www.google.com", 
    :authentication => :plain, 
    :user_name => "[email protected]", 
    :password => "kathmandu", 
    :enable_starttls_auto => true 
} 
require "action_mailer/ar_mailer" 
Gemfile 
+++++++++++++++++++++++++++ 
gem "ar_mailer", "1.5.1"
My Mailer 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
class Postoffice < ActionMailer::ARMailer 
    def recover_password_email(account, name, address) 
    @recipients = address 
    @from = "[email protected]" 
    @subject = "Your Account at #{account.org_name} is Ready" 
    @body["subdomain"] = account.subdomain 
    @body["name"] = name 
    @body["org_name"] = account.org_name 
    @body["password"] = password 
    @body["email"] = address 
    end 
end 
My controller 
++++++++++++++++++++++++++++++++++++++++++++++++++++ 
def reset_password 
    @user = User.find_by_email(params[:email]) 

    begin 
     if @user 
     password = get_new_password 
     @user.update_attributes!(:password => password) 
     Postoffice.deliver_recover_password_email(@account, @user.individual.firstname, @user.email, password) 
     flash[:notice] = "Your password has been e-mailed to you. It should show up in a minute!" 
     redirect_to '/sessions/new'  
     end 
    rescue 
     flash[:notice] = "Sorry, there was a problem resetting your password." 
     redirect_to '/sessions/new' 
    end 
    end 
end 

Siempre que corro comando ar_sendmail apenas consigo debajo de mensaje. Si lo golpeo RAILS_ROOT en la consola entonces se muestra /Users/me/Dev/a5his

 
Usage: ar_sendmail [options] 

ar_sendmail scans the email table for new messages and sends them to the 
website's configured SMTP host. 

ar_sendmail must be run from a Rails application's root or have it specified 
with --chdir. 

If ar_sendmail is started with --pid-file, it will fail to start if the PID 
file already exists or the contents don't match it's PID. 

Sendmail options: 
    -b, --batch-size BATCH_SIZE  Maximum number of emails to send per delay 
            Default: Deliver all available emails 
     --delay DELAY    Delay between checks for new mail 
            in the database 
            Default: 60 
     --max-age MAX_AGE   Maxmimum age for an email. After this 
            it will be removed from the queue. 
            Set to 0 to disable queue cleanup. 
            Default: 604800 seconds 
    -o, --once      Only check for new mail and deliver once 
            Default: false 
    -p, --pid-file [PATH]   File to store the pid in. 
            Defaults to /var/run/ar_sendmail.pid 
            when no path is given 
    -d, --daemonize     Run as a daemon process 
            Default: false 
     --mailq      Display a list of emails waiting to be sent 

Setup Options: 
     --create-migration   Prints a migration to add an Email table 
            to stdout 
     --create-model    Prints a model for an Email ActiveRecord 
            object to stdout 

Generic Options: 
    -c, --chdir PATH     Use PATH for the application path 
            Default: . 
    -e, --environment RAILS_ENV  Set the RAILS_ENV constant 
            Default: 
    -t, --table-name TABLE_NAME  Name of table holding emails 
            Used for both sendmail and 
            migration creation 
            Default: Email 
    -v, --[no-]verbose    Be verbose 
            Default: 
    -h, --help      You're looking at it 


ar_sendmail must be run from a Rails application's root to deliver email. 

/Users/me/Dev/a5his does not appear to be a Rails application root. 

Gracias de antemano <> <

Respuesta

2

¿Qué le parece usar el trabajo retrasado? He usado ar mailer en el pasado y encuentro que el trabajo diferido es una solución mucho mejor.

https://github.com/collectiveidea/delayed_job

+0

Gracias Kevin y el trabajo retrasado es una gran joya. – a5his

0

Trate ar_sendmail --chdir /Users/me/Dev/a5his o el cambio en la raíz de sus carriles de aplicación antes de ejecutar el comando

+0

Cuando presiono RAILS_ROOT en la consola, muestra/Users/me/Dev/a5his. ¿No es esto significa que estoy en la raíz de mi aplicación? – a5his

+0

¡No funcionó! – a5his

1

No estoy seguro si Hará una diferencia, pero dice here para poner

require "action_mailer/ar_mailer" 

en environment.rb, no development.rb o production.rb. Aparte de eso, no puedo ver nada de lo que te perdiste.

+0

Creo que no importa si ponemos el código anterior en development.rb en lugar de environment.rb. Gracias por la respuesta. – a5his

0

ar_sendmail debe ejecutarse desde la raíz de una aplicación Rails para entregar correo electrónico. /Users/me/Dev/a5his no parece ser una raíz de la aplicación Rails.

¿Está ejecutando el comando en la raíz de la aplicación?

+0

Sí, no hay dudas al respecto. a5his es mi carpeta raíz. – a5his

0

tratar

cd #{Rails.root.to_s} && bundle exec ar_sendmail_rails3 -e production 
0

Si nos fijamos en la fuente (que se muestra a continuación), se muestra este mensaje en caso de cargar config/entorno de falla. Una instancia de esto con la que me encontré fue donde no se cumplía una dependencia, lo que causaba que se disparara una excepción cuando config/environment se estaba cargando. Para solucionar esto, puede usar una sesión de IRB e intentar requerir config/environment para ver qué error puede estar causando que el requerimiento falle.

Dir.chdir options[:Chdir] do 
    begin 
    require 'config/environment' 
    rescue LoadError 
    usage opts, <<-EOF 
    #{name} must be run from a Rails application's root to deliver email. 
    #{Dir.pwd} does not appear to be a Rails application root. 
     EOF 
    end 
end 
Cuestiones relacionadas