私はこのコードをコンソール上に(最初の行"タスク... "なしで!!!)動作させています。 DBにイベントを作成します。レーキ(レーキfetch_ttt)を実行している場合しかし、運は:レーキタスクNoMethodError:未定義のメソッド `task 'for main:オブジェクト
task :fetch_ttt => :environment do
require 'nokogiri'
require 'open-uri'
url = "http://www.example.com"
doc = Nokogiri::HTML(open(url))
doc.css("#eventrow").each do |item|
unless Event.find_by_name(item.at_css("a").text).present?
Event.create(
:start_time => item.at_css("#eventdate").text,
:name => item.at_css("a").text,
:url => item.at_css("a")[:href]
)
end
end
end
これは(どちらもドライランではあまりない)トレースではありません:
** Invoke fetch_ttt (first_time)
** Invoke environment (first_time)
** Execute (dry run) environment
** Execute (dry run) fetch_ttt
それは数時間前に罰金されています。それ以来、私は "バンドルの更新"を行い、いくつかのDBの移行、編集された関連付けを行いました。私はマイグレーションをロールバックして、モデル関連の変更を無駄なく削除しました。私は宝石を疑う。
3つの宝石の下で、私は以前のバージョンにロールバックして、それが原因であるかどうかを確認しました。そして完全な差分。
古い:
gem 'rake', '10.5.0'
gem 'http', '0.9.8'
gem 'ipaddress', '0.8.2'
フル差分:
- bcrypt (3.1.10)
+ bcrypt (3.1.11)
- carrierwave (0.10.0)
+ carrierwave (0.11.2)
+ mimemagic (>= 0.3.0)
- concurrent-ruby (1.0.0)
+ concurrent-ruby (1.0.2)
- devise (3.5.6)
+ devise (4.1.1)
- railties (>= 3.2.6, < 5)
+ railties (>= 4.1.0, < 5.1)
- thread_safe (~> 0.1)
- domain_name (0.5.20160128)
+ domain_name (0.5.20160310)
- excon (0.45.4)
+ excon (0.49.0)
- excon (~> 0.45)
+ excon (~> 0.49)
****lots of stuff related to "fog" gem
- http (0.9.8)
+ http (0.9.9)
- ipaddress (0.8.2)
+ ipaddress (0.8.3)
- mime-types (2.99)
- mini_magick (4.4.0)
+ mime-types (2.99.1)
+ mimemagic (0.3.1)
+ mini_magick (4.5.1)
mini_portile2 (2.0.0)
- minitest (5.8.4)
- multi_json (1.11.2)
+ minitest (5.9.0)
+ multi_json (1.12.0)
- rails_stdout_logging (0.0.4)
+ rails_stdout_logging (0.0.5)
- responders (2.1.1)
+ responders (2.2.0)
- sprockets (3.5.2)
+ sprockets (3.6.0)
- sprockets-rails (3.0.1)
+ sprockets-rails (3.0.4)
- tilt (2.0.2)
+ tilt (2.0.4)
Railsの4.2.5、Rubyの2.1.4は、私はC9 IDEにしています。しかし、英雄にも作用しません。
UPDATE
は私が取得のみコンソールで今10.5.0を熊手に戻って戻った(とgrep熊手Gemfile.lockをしました):
<Rake::Task fetch_ttt => [environment]>
スクレイピングはまったく実行されません。 (
あなたは 'Event.create(' Event.create!( '。)に変更すると、イベントを保存できないときに例外が発生します。 – spickermann
ありがとうございますが、それは最初の行のようです.Plsは、 – Zsolt