2011-04-10 2 views
1

오늘은 또 다른 문제가 있습니다. 필자는 프로덕션 서버에 배포 한 후 테스트 할 때마다 전자 메일이 필요할 때마다 문제가 발생합니다. 특히 고안의위한 확 등록 이메일을, 내가 계정에 로그인 할 때마다, 다음과 같은 오류가 Rails/Devise/Mailer : 등록 시도시 'config.action_mailer.default_url_options'오류가 발생했습니다.

ActionView::Template::Error (You can no longer call ActionMailer::Base.default_url_options directly. You need to set config.action_mailer.default_url_options. If you are using ActionMailer standalone, you need to include the routing url_helpers directly.): 

내 설정/환경/production.rb 보면 ... 로그에서 발생합니다, 나는 다음과 같은 설정을 ...

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

그래서 config.action_mailer.default_url_options IS가 사용되고 있지만, 완전히 무시된다. 나는 '127.0.0.1'과 내 서버의 IP addy로 호스트를 변경하려고 시도했지만, 그렇지는 않았다. config/application.rb에 던져 버렸지 만 그럴 수 없습니다. 내 프로젝트에서 default_url_options을 선언하는 다른 줄을 찾았지만 production.rb 파일에서만 설정되었습니다. 나는 인터넷 검색을하고 config.cache_classes를 false로 설정하라는 제안을 발견했지만 거기도 부정합니다.

이제 미쳐 ... 내 프로젝트에 새로운 댓글을 달려고 할 때마다 동일한 오류가 발생합니다 (처음으로 댓글 작성자 인 경우 이메일 주소를 확인하도록 이메일을 보내도록 설정). 나는 프로덕션 .rb 파일에서 config.action_mailer ... 등을 가져 왔고 비올라 - 내 의견 메일러가 작동하여 이메일을 전송했습니다.

아직도, Devise는 절대 완고하며 내게 위의 오류를 던지고 있습니다. 왜 어떤 아이디어? BTW, 내 모든 보석은 최신입니다. 아래는 내 production.rb 파일입니다.

--- UPDATE ---------------

약간의 진전을 가지고 있지만, 이것은 단지 이상입니다. 서버를 시작하고 메일 (사용자 등록, 코멘트)을 보낼 무언가를 시도하면 위의 ActionMailer :: Base 오류 메시지가 나타납니다. 내가 다시 행동을 시도하면 ... 작동하고 메일이 보내집니다. 그 시점부터 (승객 및/또는 서버가 재부팅 될 때까지) 모든 우편물 조치는 정상적으로 작동합니다.

그러나 아직 다른 문제가 없으면 (끝나지 않음) 이메일 본문이 완전히 비어 있습니다.

답변

4

는 다시 한번이 문제를 치는 결국, 나는 한 번 결정되고 모든 이유가이 오류를 얻고 있었다 파악하고, 아무도 다른 듯없는 이유 (Google의 결과가 거의 없음).

내 프로젝트를 완전히 분해하고 재구성 한 후 마침내 제가 설치 한 Sitemap 생성기 플러그인에 문제를 정확히 지적했습니다. 일단 내가 모든 흔적을 제거하고 나면, 위의 오류는 마침내 끝났습니다.

0

나는이 문제를 해결했다고 믿는다. 그러나 나는 그것을 정확히 "정확히"확신하지는 못했다. 그것은 아주 잘 config.cache_classes = true 내가 주석으로, 그리고 이것이 내 사이트 캐싱이나 다른 무언가에 영향을 미칠 것이지만, 그것은 그것을 파산하지 않는 것 같습니다.

또한, 빈 이메일 본문에서 전환하여 해결 : sendmail을 : smtp.

여기 내 최종 production.rb 파일입니다.이 파일은 앞으로 비슷한 문제가있는 사용자에게 유용 할 수 있습니다. 내가 테스트 데이터베이스에서 테스트하기 위해 시도 할 때

MyProject::Application.configure do 

    # Commented out, causes 'ActionView::Template' error 
    #config.cache_classes = true 

    config.whiny_nils = true 

    config.consider_all_requests_local = true 

    config.action_view.debug_rjs = true 

    config.action_controller.perform_caching = true 

    config.cache_store = :mem_cache_store 

    config.active_support.deprecation = :log 

    config.action_dispatch.best_standards_support = :builtin 

    config.action_mailer.raise_delivery_errors = true 

    Sunspot.config.solr.url = 'http://127.0.0.1:8080/solr' 

    Paperclip.options[:command_path] = "/usr/bin/" 

    config.action_mailer.perform_deliveries = true 

    config.action_mailer.delivery_method = :smtp 

    ActionMailer::Base.smtp_settings = { 
    :address => "smtp.gmail.com", 
    :enable_starttls_auto => true, 
    :port => 587, 
    :authentication => :plain, 
    :user_name => "[email protected]", 
    :password => 'password' 
    } 

    config.action_mailer.default_url_options = { :host => 'dev.mydomain.com' } 

    config.time_zone = "Central Time (US & Canada)" 

end 
0

Fat Free CRM에 대해이 문제를 해결하기 위해 노력하고 있습니다. 레일즈 3이 클래스를 지연로드하기 때문에이 오류가 발생한다는 것을 깨달았습니다. 당신이해야 할 일은 environment/**. rb 파일의 ActionMailer :: Base 클래스를 '만지면'클래스를로드하기 만하면됩니다.

: 그럼 당신은 등 컨트롤러에서 ActionMailer :: Base.default_url_options를 호출 할 수 있습니다

그래서 내 환경 파일이 지금과 같이 (우리가 자동으로 request.host_with_port에서 메일러 호스트를 설정할 수 있도록 우리는이 작업을 수행)

FatFreeCRM::Application.configure do 

    ... 

    ActionMailer::Base 
end