Как использовать всякий раз, когда гем для работы cron?

Я делаю приложение, в котором пользователь будет получать почту каждую минуту, но проблема в том, что она не получает никакой почты. Я установил драгоценный камень всякий раз и запустил команду установки пакета. После этого я запустил . команда и файл schedule.rb, сгенерированные и приведенные ниже, являются файлами.

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

Расписание.рб

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

Может кто подскажет где проблема????? Любая помощь будет оценена ...

Заранее спасибо.


person Mohd Anas    schedule 21.11.2012    source источник


Ответы (1)


сам 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
person 23tux    schedule 21.11.2012
comment
да, UserMailer работает нормально... вы имеете в виду, что удалите метод доставки из пользовательской модели и поместите его в класс почтовой программы.. правильно?? Вы думаете, что это проблема среды????? - person Mohd Anas; 21.11.2012
comment
Может дело в среде, какие у вас настройки? Я не уверен, куда поместить метод .deliver, но его нужно вызывать ;) - person 23tux; 21.11.2012
comment
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 =› '*******' } - person Mohd Anas; 21.11.2012
comment
письма доставляются? Потому что я также использую gmail для отправки почты, и у меня другие настройки. Если это общая проблема, я могу дать вам свою конфигурацию. И, пожалуйста, используйте форматировщики кода your code - person 23tux; 21.11.2012
comment
если я использую простое почтовое приложение для уведомлений, письма доставляются, но когда я использую всякий раз, когда гем для отправки писем после определенного времени, письма не доставляются... - person Mohd Anas; 21.11.2012
comment
не могли бы вы выписать несколько журналов работы crone? Может выдает ошибки а вы их не замечаете - person 23tux; 21.11.2012
comment
да ... когда я запускаю команду, она отображает * * * * * /bin/bash -l -c 'cd /root/Desktop/Rails/email2 && script/rails runner -e development '\''User.send_email_to_user' \''' ## [message] Выше приведен файл расписания, преобразованный в cron-синтаксис; ваш файл crontab не был обновлен. ## [сообщение] Запустите `whenever --help' для получения дополнительных опций. - person Mohd Anas; 21.11.2012