2012-09-26 38 views
1

我创建了两个邮件程序,其中一个邮件程序未在Heroku上的生产中工作。另一个邮件程序已经过测试,它的工作原理,所以我知道sendgrid的电子邮件配置工作。Heroku Mailer延迟作业失败,出现ArgumentError:参数数量错误(0代表1) - 0次失败尝试

我有一个邀请型号:

class Invitation < ActiveRecord::Base 
    attr_accessible :recipient_email, :sender_id, :sent_at, :token 
    belongs_to :sender, :class_name => 'User' 
    has_one :recipient, :class_name => 'User' 
    validates_presence_of :recipient_email 
    validate :recipient_is_not_registered 
    validate :sender_has_invitations, :if => :sender 

    before_create :generate_token 
    before_create :decrement_sender_count, :if => :sender 
    after_create do |invitation| 
    Mailer.delay.deliver_invitation(invitation) 
    end 

    private 

    def recipient_is_not_registered 
    errors.add :recipient_email, 'is already registered' if User.find_by_email(recipient_email) 
    end 

    def sender_has_invitations 
    unless sender.invitation_limit > 0 
     errors.add_to_base 'You have reached your limit of invitations to send.' 
    end 
    end 

    def generate_token 
    self.token = Digest::SHA1.hexdigest([Time.now, rand].join) 
    end 

    def decrement_sender_count 
    sender.decrement! :invitation_limit 
    end 
end 

邮包:

class Mailer < ActionMailer::Base 
    helper ActionView::Helpers::UrlHelper 
default from: "[email protected]" 

def invitation(invite) 
    @invitation = invite 

    mail to: invitation.recipient_email, subject: "Invitaiton" 
end 
end 

的文本文件:

You are invited to join our beta! 
<%= link_to 'Sign Up', signup_url(@invite.token) %> 

和一个视图:

<div class="breadcrumbs span12 row"> 
    <p> 
     <%= link_to "contests", contests_path %> > send invitation 
    </p> 
</div> 
<div class="span12"> 
    <div class = "span6 offset2 pull-left"> 
     <div class="title"> 
      <h1>Invite Friends</h1> 
     </div> 
     <%= simple_form_for @invitation do |f| %> 
      <fieldset class="edit well"> 
       <p></p> 
       <p><%= f.input :recipient_email, :label => "Friend's email address" %></p> 
      </fieldset> 
      <div class="form-actions"> 
        <%= f.submit 'Send Invite', :class => 'btn btn-primary pull-right btn-large m5' %> 
      </div> 
     <% end %> 
    </div> 
    <div class = "well pull-right span2"> 
     <% if current_user.invitation_limit > 0 %> 
     <p> 
      Welcome <%= current_user.name %>, 
      you have <%= current_user.invitation_limit %> invitations left</p> 
     <% else %> 
     <% end %> 
    </div> 

</div> 

下面是从Heroku的日志文件:

heroku[router]: GET www.lumeo.com/invitations/new dyno=web.1 queue=0 wait=0ms service=85ms status=200 bytes=4922 
app[worker.1]: [Worker(host:881b0507-883f-43b1-b3aa-7cfddc9c17fa pid:2)] Class#invitation failed with ArgumentError: wrong number of arguments (0 for 1) - 0 failed attempts 
app[worker.1]: [Worker(host:881b0507-883f-43b1-b3aa-7cfddc9c17fa pid:2)] Class#invitation failed with ArgumentError: wrong number of arguments (0 for 1) - 1 failed attempts 
app[worker.1]: [Worker(host:881b0507-883f-43b1-b3aa-7cfddc9c17fa pid:2)] 2 jobs processed at 4.3239 j/s, 2 failed ... 
app[worker.1]: [Worker(host:881b0507-883f-43b1-b3aa-7cfddc9c17fa pid:2)] Class#invitation failed with ArgumentError: wrong number of arguments (0 for 1) - 2 failed attempts 
app[worker.1]: [Worker(host:881b0507-883f-43b1-b3aa-7cfddc9c17fa pid:2)] Class#invitation failed with ArgumentError: wrong number of arguments (0 for 1) - 3 failed attempts 
app[worker.1]: [Worker(host:881b0507-883f-43b1-b3aa-7cfddc9c17fa pid:2)] 2 jobs processed at 11.4575 j/s, 2 failed ... 

应用[postgres的]:[13913-1] [白色] LOG:检查点开始:时间 应用程式[postgres的]:[13914-1] [白色] LOG:检查点完成:写入0个缓冲区(0.0%);添加0个事务日志文件,删除0个,再循环1个;写= 0.000s,同步= 0.000s,总= 0.007s;同步文件= 0,最长= 0.000秒,平均= 0.000秒

如果您有任何建议,请告诉我。提前致谢。布赖恩

回答

0

该问题的答案可能会或可能不会帮助别人。我有两个定义的邮件类,一个在邮件程序/ mailer.rb中,另一个在models/mailer.rb中

Rails 2.0没有使用邮件程序目录,显然我一直在追踪两个不同来源的信息,设置它。可能有其他人会遇到同样的问题。我删除了models/mailer.rb文件

相关问题