Wie kann man rufus-scheduler mit einer auf Heroku bereitgestellten Rails-App zum Laufen bringen?
Im./config/initializers
Ich habe eine Datei namens erstellttask_scheduler.rb
und es enthält den folgenden 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|
# Select the login form
login_form = page.forms.first
# Insert the username and password
login_form.username = 'username'
login_form.password = 'password'
# Submit the login information
dashboard_page = a.submit(login_form, login_form.buttons.first)
# Check if the login was successfull
puts check_1 = dashboard_page.title == 'Dashboard' ? "CHECK 1 DASHBOARD SUCCESS" : "CHECK 1 DASHBOARD FAIL"
# Visit the orders index page to scrape some standard information
orders_page = a.click(dashboard_page.link_with(:text => /Bestellingen/))
# pp orders_page # => http://pastebin.com/L3zASer6
# Check if the visit is successful
puts check_2 = orders_page.title == 'Bestellingen' ? "CHECK 2 ORDERS SUCCESS" : "CHECK 2 ORDERS FAIL"
# Search for all #singleOrder table row's and put them in variable all_single_orders
all_single_orders = orders_page.search("#singleOrder")
# Scrape the needed information (the actual save to database is omitted)
all_single_orders.each do |order|
# Set links for each order
order_link = order.at_css("a")['href'] #Assuming first link in row
@order_id = order.search("#orderId").text
@order_status = order.search("#orderStatus").text
@order_revenue = order.search("#orderAmount").text
# Visit a single order page to fetch more detailed information
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
Dasrufus-scheduler
Funktioniert beim Testen in einer Entwicklungsumgebung. Aber es funktioniert nicht mehr, wenn ich die App für Heroku (kostenlos) bereitstelle.
Ich benutzePhusion Passenger 4.0.27
als Anwendungsserver.
Mein Gemfile sieht so aus:
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
DasProcfile
Der von Phusion Passenger benötigte Inhalt enthält:
web: bundle exec passenger start -p $PORT --max-pool-size 3
Ich habe keine Arbeiter am Laufen. Ich verwende einen kostenlosen Standardweb
Dyno.
Irgendeine Idee warumrufus-scheduler
funktioniert nicht während der Bereitstellung auf Heroku?
Ich weiß, ich könnte einen Kunden anlegen.rake
Datei und verwenden Sie die kostenloseHeroku Scheduler add-on
um die aufgabe auszuführen. Aber ich frage mich, ob es einen Weg gibt, das zu bekommenrufus-scheduler
und freiheroku
Prüfstandskombination zur Arbeit.