Ruby 1.9.2で動作しないAR_SENDMAILコマンド
-
25-10-2019 - |
質問
走ることができません ar_sendmail
私のターミナルからのコマンド。私はその構成を逃したとは思わない。以下は私のコードです。
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 => "ashis.lun@gmail.com", :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 = "ashis.lun@gmail.com" @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
ar_sendmailコマンドを実行するたびに、メッセージの下に表示されます。ヒットしたら RAILS_ROOT
コンソールでは、私はそれを示しています /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.
事前にありがとう<>
解決
遅延したジョブを使用してみませんか?私は過去にAR Mailerを使用しましたが、遅れた仕事ははるかに優れた解決策を見つけました。
他のヒント
それが違いを生むかどうかはわかりませんが、それは言う ここ 置く
require "action_mailer/ar_mailer"
の environment.rb
, 、 いいえ development.rb
また production.rb
. 。それ以外は、あなたが見逃したものは何も見えません。
試す ar_sendmail --chdir /Users/me/Dev/a5his
または、コマンドを実行する前にRailsアプリのルートに変更する
AR_SendMailは、電子メールを配信するためにRailsアプリケーションのルートから実行する必要があります。 /users/me/dev/a5hisは、Railsアプリケーションルートではないようです。
アプリケーションのルートでコマンドを実行していますか?
試す
cd #{Rails.root.to_s} && bundle exec ar_sendmail_rails3 -e production
ソース(以下に示す)を見ると、構成/環境の読み込みが失敗した場合、このメッセージが表示されます。私が遭遇したこの1つの例は、依存関係が満たされていない場所であり、構成/環境がロードされているときに例外を発射することでした。これに対処するために、IRBセッションを使用して、設定/環境に要求が失敗する可能性のあるエラーを確認することを試みることができます。
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