ruby-on-rails – 如何让rufus-scheduler使用部署到Heroku的Rail
发布时间:2020-12-17 03:40:51 所属栏目:百科 来源:网络整理
导读:在./config/initializers中,我创建了一个名为task_scheduler.rb的文件,它包含以下代码: require 'rufus-scheduler'require 'mechanize'scheduler = Rufus::Scheduler.newscheduler.every("1h") do puts "Starting Rufus Scheduler - Task 1 - Checking exam
在./config/initializers中,我创建了一个名为task_scheduler.rb的文件,它包含以下代码:
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 rufus-scheduler在开发环境中进行测试时可以正常工作.但是当我将应用程序部署到Heroku(免费)时它停止工作. 我正在使用Phusion Passenger 4.0.27作为应用程序服务器. 我的Gemfile看起来像这样: 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 Phusion Passenger所需的Procfile包含以下内容: web: bundle exec passenger start -p $PORT --max-pool-size 3 我没有工人跑.我正在使用一个免费的标准网络Dyno. 知道为什么rufus-scheduler在部署到Heroku时不能正常工作吗? UPDATE 我知道我可以创建一个客户.rake文件并使用免费的Heroku Scheduler附件来执行任务.但我想知道是否有办法让rufus-scheduler和free heroku dyno组合起作用. 解决方法
这是一个如何让它在Rails上工作的例子:
# # config/initializers/scheduler.rb require 'rufus-scheduler' # Let's use the rufus-scheduler singleton # s = Rufus::Scheduler.singleton # Awesome recurrent task... # s.every '1m' do Rails.logger.info "hello,it's #{Time.now}" end 看看documentation. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |