2012-11-21 80 views
0

我正在製作一個應用程序,用戶在每分鐘後都會收到一封郵件,但問題是它沒有收到任何郵件。我已經安裝了每當gem並運行bundle install命令時。之後,我運行wheneverize。命令和schedule.rb文件生成並在下面給出的是文件。如何使用gem for cron job?

UsersController

class UsersController < ApplicationController 
# GET /users 
# GET /users.json 


def index 
@users = User.all 

respond_to do |format| 
    format.html # index.html.erb 
    format.json { render json: @users } 
end 
end 

# GET /users/1 
# GET /users/1.json 
def show 
@user = User.find(params[:id]) 

respond_to do |format| 
    format.html # show.html.erb 
    format.json { render json: @user } 
end 
end 

# GET /users/new 
# GET /users/new.json 
def new 
@user = User.new 

respond_to do |format| 
    format.html # new.html.erb 
    format.json { render json: @user } 
end 
end 

# GET /users/1/edit 
def edit 
@user = User.find(params[:id]) 
end 

# POST /users 
# POST /users.json 
def create 
@user = User.new(params[:user]) 

respond_to do |format| 
    if @user.save 


    format.html { redirect_to(@user, :notice => 'User was successfully created.') } 
    format.json { render :json => @user, :status => :created, :location => @user } 
    else 
    format.html { render :action => "new" } 
    format.json { render :json => @user.errors, :status => :unprocessable_entity } 
    end 
end 
end 


# PUT /users/1 
# PUT /users/1.json 
def update 
@user = User.find(params[:id]) 

respond_to do |format| 

    format.html { redirect_to @user, notice: 'User was successfully updated.' } 
    format.json { head :no_content } 
    else 
    format.html { render action: "edit" } 
    format.json { render json: @user.errors, status: :unprocessable_entity } 
    end 
end 
end 

# DELETE /users/1 
# DELETE /users/1.json 
def destroy 
@user = User.find(params[:id]) 
respond_to do |format| 
    if @user.destroy 
    # Tell the UserMailer to send a welcome Email after save 


    format.html { redirect_to(@user, :notice => 'User was successfully created.') } 
    format.json { render :json => @user, :status => :created, :location => @user } 
    else 
    format.html { render :action => "new" } 
    format.json { render :json => @user.errors, :status => :unprocessable_entity } 
    end 
end 
end 

end 

Schedule.rb

every 1.minute do 
runner "User.send_email_to_user" 
end 

這是型號user.rb

class User < ActiveRecord::Base 
attr_accessible :email, :login, :name, :Notification 

def self.send_email_to_user 
UserMailer.welcome_email(@user).deliver 
end 
end 

這是User_mailer.rb

class UserMailer < ActionMailer::Base 
default from: "[email protected]" 

def welcome_email(user) 
@user = user 
@url = "http://gmail.com/login" 
mail(:to => user.email, :subject => "Welcome to My Awesome Site") 
end 
end 

誰能告訴我問題在哪裏????? 任何幫助,將不勝感激...

在此先感謝。

回答

0

UserMailer本身的工作?我想到的東西,你需要調用郵件法後的交付方法,郵件方法只准備好消息:

mail(:to => user.email, :subject => "Welcome to My Awesome Site").deliver 

而且你正確配置action_mailer?您可以配置它以顯示錯誤,例如在development.rb:

config.action_mailer.default_url_options = { :host => 'yourdomain.com' } 
config.action_mailer.raise_delivery_errors = true 
config.action_mailer.perform_deliveries = true 
+0

是UserMailer正常工作......你的意思是刪除從用戶模型交付方法,並將其放置在郵件class..right?你認爲這是enviornment的問題????? –

+0

也許這可能是環境,你有什麼設置?我不確定在哪裏放置''.deliver''方法,但必須調用;} – 23tux

+0

config.action_mailer.raise_delivery_errors = true config.action_mailer.delivery_method =:smtp config.action_mailer.default_url_options = { :host =>'www.gmail.com'} config.action_mailer.perform_deliveries = true config.active_support.deprecation =:log config.action_mailer.smtp_settings = { :address =>'smtp.gmail.com', :port => 25, :domain =>'www.gmail.com', :authentication =>:login, :user_name =>'**** 8', :password =>'**** ***' } –