2014-12-28 4 views
0

Я пытаюсь использовать gem-dev в моем приложении RoR. Он работает нормально, за исключением режима производства, я не могу получать электронные письма за забытые пароли. Страница показывает эту ошибку:Отключен на Devise забытый пароль, в развертывании RoR-приложений

Errno::ECONNREFUSED in Devise::PasswordsController#create 
Connection refused - connect(2) 

Rails.root: /app 

Application Trace | Framework Trace | Full Trace 
Request 

Parameters: 

{"utf8"=>"✓", 
"authenticity_token"=>"S8rQE7SyT4+7gLvwIiFG+violKPAhzzKMZKUiH0xUSU=", 
"user"=>{"email"=>"[email protected]"}, 
"commit"=>"Send me reset password instructions"} 

Я должен упомянуть, что:

  • Я запустить миграцию БД на Heroku, без ошибок.
  • Он работает отлично в развитии (электронные письма пересылаются)
  • Я использую Mandrill
  • журналы Heroku показывает какую-то ошибку Heroku маршрутизатора:
heroku[router]: at=info method=POST path="https://stackoverflow.com/users/password" host=myappname.herokuapp.com request_id 
=7e327911-49cb-448a-aa33-13f4bda8c3f dyno=web.1 connect=2ms service=351ms status=500 bytes=1754 

Мои Mailer конфигураций от production.rb такие же, как у development.rb:

config.action_mailer.delivery_method = :smtp 
# change to true to allow email to be sent during development 
config.action_mailer.perform_deliveries = true 
config.action_mailer.raise_delivery_errors = true 
config.action_mailer.default :charset => "utf-8" 

config.action_mailer.smtp_settings = { 
    address: ENV["MAIL_ADDRESS"], 
    port: 587, 
    user_name: ENV["MAIL_USERNAME"], 
    password: ENV["MAIL_PASSWORD"] 
} 

Кроме того, в production.rb у меня есть:

config.action_mailer.default_url_options = { :host => 'myappname.herokuapp.com'} 

в development.rb у меня есть:

config.action_mailer.default_url_options = { :host => 'localhost:3000' } 

Файл database.yml выглядит это:

default: &default 
    adapter: postgresql 
    user: <%= ENV['DB_USER'] %> 
    password: <%= ENV['DB_PASSWORD'] %> 
    pool: 5 
    timeout: 5000 
    port: 5432 

development: 
    <<: *default 
    database: <%= ENV['DB_NAME_DEV'] %> 

test: 
    <<: *default 
    database: <%= ENV['DB_NAME_TEST'] %> 

production: 
    <<: *default 
    database: <%= ENV['DB_NAME_PROD'] %> 

ответ

0

Наконец-то выяснилось.

Я использовал драгоценный камень Фигаро для хранения моих экологических данных, но эти ключи, хотя они были доступны в разработке, должны были быть видны для героку. Только после этого дополнительного шага они могут быть использованы в производстве:

$ figaro heroku:set 

В качестве альтернативы вы можете установить эти переменные с помощью:

$ heroku config:add <key>=<value> 
Смежные вопросы