In ./config/initializersI created a file with the name task_scheduler.rband contains the following code:
require 'rufus-scheduler'
require 'mechanize'
scheduler = Rufus::Scheduler.new
scheduler.every("1h") do
puts "Starting Rufus Scheduler - Task 1 - Checking exampleShop for new orders"
a = Mechanize.new
a.get('http://exampleshop.nl/admin/') do |page|
login_form = page.forms.first
login_form.username = 'username'
login_form.password = 'password'
dashboard_page = a.submit(login_form, login_form.buttons.first)
puts check_1 = dashboard_page.title == 'Dashboard' ? "CHECK 1 DASHBOARD SUCCESS" : "CHECK 1 DASHBOARD FAIL"
orders_page = a.click(dashboard_page.link_with(:text => /Bestellingen/))
puts check_2 = orders_page.title == 'Bestellingen' ? "CHECK 2 ORDERS SUCCESS" : "CHECK 2 ORDERS FAIL"
all_single_orders = orders_page.search("#singleOrder")
all_single_orders.each do |order|
order_link = order.at_css("a")['href']
@order_id = order.search("#orderId").text
@order_status = order.search("#orderStatus").text
@order_revenue = order.search("#orderAmount").text
single_order_page = orders_page.link_with(:href => order_link).click
@first_name = single_order_page.search(".firstName").text
@last_name = single_order_page.search(".lastName").text
@city = single_order_page.search(".city").text
@postal_code = single_order_page.search(".postalCode").text
@address = single_order_page.search(".address").text
@email = single_order_page.search(".email").text
@order_quantity = single_order_page.search(".orderQuantity").text
order = Order.create( order_id: @order_id, first_name: @first_name, last_name: @last_name, city: @city,
email: @email, postal_code: @postal_code, address: @address, order_quantity: @order_quantity,
order_revenue: @order_revenue, order_status: @order_status)
end
end
puts "Ending Rufus Scheduler - Task 1 - Checking exampleShop for new orders"
end
rufus-schedulerworks when testing in a development environment. But it stops working when I deploy the application to Heroku (for free).
I use Phusion Passenger 4.0.27as an application server.
My gemfile looks like this:
source 'https://rubygems.org'
ruby '2.0.0'
gem 'rails', '4.0.1'
gem 'rufus-scheduler', '3.0.2'
gem 'pg'
gem 'mechanize'
gem 'bcrypt-ruby', '3.1.2'
gem 'sass-rails', '~> 4.0.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 1.2'
gem 'newrelic_rpm'
group :doc do
gem 'sdoc', require: false
end
group :development do
gem 'sqlite3'
end
group :production do
gem 'rails_12factor'
gem 'passenger'
gem 'pg'
end
Procfilerequired by Phusion Passenger contains the following:
web: bundle exec passenger start -p $PORT --max-pool-size 3
I have no workers. I use one free webDyno standard .
Any idea why it rufus-schedulerdoesn't work during deployment on Heroku?
UPDATE
, .rake Heroku Scheduler add-on . , rufus-scheduler free heroku .