Authlogic & delayed_job & delayed_jobl_mailer & daemons? - PullRequest
0 голосов
/ 30 января 2011

[править] Я могу отложить всю почту, используя плагин delayed_job на общем сервере с демоном… кроме почты, использующей authlogic.Я не знаю, где искать, и почему он работает по-другому.

демоны (выкл.) Delayed_job & delayed_mail_mailer (вкл.) Authlogic (reset_password): отправка демонов (вкл.) Delayed_job& delayed_mail_mailer (on) other_model (send_mail): отправить демонов (on) delayed_job & delayed_mail_mailer (on) authlogic (reset_password): ничто!

Где искать проблему ??

app / initializer / delayed_mailer.rb:

class ActionMailer::Base
  include Delayed::Mailer
end

config / initializers / delayed_job_config.rb:

Delayed::Job.destroy_failed_jobs = false
silence_warnings do
  Delayed::Job.const_set("MAX_ATTEMPTS", 3)
  Delayed::Job.const_set("MAX_RUN_TIME", 5.minutes)
end

script / dalayed_job:

#!/usr/bin/env ruby 
require 'rubygems' 
require 'daemons' 
dir = File.expand_path(File.join(File.dirname(__FILE__), '..')) 
daemon_options = { 
  :multiple   => false, 
  :dir_mode   => :normal, 
  :dir        => File.join(dir, 'tmp', 'pids'), 
  :backtrace  => true, 
  :log_output => true 
} 

Daemons.run_proc('delayed_job', daemon_options) do 
  Dir.chdir dir 
  RAILS_ENV = ENV['RAILS_ENV'] || 'development' 
  require File.join('config', 'environment') 
  Delayed::Worker.new.start 
end

модель / контроллеры / passwoed_reset_controller.rb

  def create
    @user = User.find_by_email(params[:email])
    if @user
      Notifier::deliver_password_reset_instructions(@user)
      flash[:notice] =  t('ResetInstructionSend') + t('CheckMail')
      redirect_to root_url
    else
      flash[:notice] = t('NoUserMail')
      render :action => :new
    end
  end

контроллеры / other_controller.rb

 def update    
    @patent = Patent.find(params[:id])
    # update all
    @patent.update_attributes(params[:patent])
      @user = @patent.user
      @skill = @patent.skill
      @current_user = current_user
      Notifier::deliver_specialist_confirmation(@user, @skill, @current_user)
   end

модели / notifier.rb

def password_reset_instructions(user)
    recipients user.email
    from       "Skill Forest"
    subject       "Password Reset Instructions"
    body          :edit_password_reset_url => edit_password_reset_url(user.perishable_token),:user => user

конец

def specialist_confirmation (user, skill, current_user)
  recipients  user.email
  from       "Skill Forest"
  subject    "Bravo"
  body        :user => user, :skill => skill, :current_user => current_user
end

Больше информации: Rails 2.3.5 & tobi delayed_job & daemons 1.0.10 Я на общем хостинге Dreamhost, но в режиме разработки на моем компьютере выгляжу так же.

[Edit 2] Я буду контролировать, чтобы быть уверенным, но, кажется, это было только мСлишком короткое время бега топора ...

[Редактировать 3] я пытаюсь по-другому: контролировать, если pid существует

1 Ответ

0 голосов
/ 21 июня 2011

Просто чтобы перевернуть страницу ... перейти в Rails 3 и обновить гем ... все хорошо.И намного проще.

Тайна двоичного кодирования!

...