[解決済み] HerokuにデプロイされたRailsアプリでrufus-schedulerを動作させる方法とは?
2022-02-07 15:02:13
質問
で
./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
は
Procfile
は、Phusion Passenger が必要とする以下の内容を含んでいます。
web: bundle exec passenger start -p $PORT --max-pool-size 3
ワーカーを動かしていない。無料の標準的なものを1つ使っています
web
ダイノ
心当たりは?
rufus-scheduler
がHerokuにデプロイされた状態で動作しないのですが?
アップデイト
顧客を作ることができるのは知っている
.rake
ファイルを作成し、無料の
Heroku Scheduler add-on
を実行してください。しかし、私は、そのような方法で
rufus-scheduler
とフリー
heroku
ダイノコンビネーションで動作させる。
解決方法は?
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
を見てみましょう。 ドキュメント .
関連
-
[解決済み] Railsサーバーがポートはすでに使用されていると言う、そのプロセスを殺すにはどうすればよいですか?
-
[解決済み】コレクションをDESCで並べる方法
-
[解決済み] pg gem をインストールしようとすると 'libpq-fe.h' ヘッダが見つからない
-
[解決済み] サーバーはRailsで既に稼働している
-
[解決済み] 属性を割り当てる場合、引数としてハッシュを渡す必要がある
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み] 既存のHerokuアプリにフォルダをリンクさせる方法
-
[解決済み] Ruby/RailsでHashからキーを削除して残りのHashを取得する方法は?
-
[解決済み】Herokuでrailsサーバーを再起動する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】取得中。「プロジェクトのクローンとマイグレート後に、「マイグレーションは保留中です。この問題を解決するには 'bin/rake db:migrate RAILS_ENV=development' を実行してください。
-
[解決済み] どのようにrailsでラジオボタンを正しく使用するには?
-
[解決済み] AWS S3です。アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレスされている必要があります。
-
[解決済み] rspec 3 - クラスメソッドをスタブ化する
-
[解決済み] Rubyのクラスで未初期化の定数エラーが発生する
-
[解決済み] 検索 vs 発見する by vs どこに
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜ?
-
[解決済み] railsアプリケーションでCookieのオーバーフロー?
-
[解決済み] RoRにおけるSpringサーバーの機能とは?
-
[解決済み] サーバーはRailsで既に稼働している