Ruby 即使I';我包括环境
我有一个带有cron作业的rakefile,它可以访问我的一个模型,然后搜索我的数据库。我正在包括我的环境并查看是否能够创建我的对象,但当我尝试运行“find”方法时,我遇到以下错误:Ruby 即使I';我包括环境,ruby,ruby-on-rails-3,rake,Ruby,Ruby On Rails 3,Rake,我有一个带有cron作业的rakefile,它可以访问我的一个模型,然后搜索我的数据库。我正在包括我的环境并查看是否能够创建我的对象,但当我尝试运行“find”方法时,我遇到以下错误: rake aborted! undefined method `find' for #<Feeder:0x103611df0> /Library/Ruby/Gems/1.8/gems/activemodel-3.0.4/lib/active_model/attribute_methods.rb:364
rake aborted!
undefined method `find' for #<Feeder:0x103611df0>
/Library/Ruby/Gems/1.8/gems/activemodel-3.0.4/lib/active_model/attribute_methods.rb:364:in `method_missing'
/Library/Ruby/Gems/1.8/gems/activerecord-3.0.4/lib/active_record/attribute_methods.rb:46:in `method_missing'
/Users/josh.kerr/Documents/Projects/joshkerr.jekyll/Rakefile:28
/Users/josh.kerr/Documents/Projects/joshkerr.jekyll/Rakefile:20:in `each'
/Users/josh.kerr/Documents/Projects/joshkerr.jekyll/Rakefile:20
/Users/josh.kerr/Documents/Projects/joshkerr.jekyll/Rakefile:18:in `each'
/Users/josh.kerr/Documents/Projects/joshkerr.jekyll/Rakefile:18
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in `invoke'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `each'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in `run'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/bin/rake:31
/usr/bin/rake:19:in `load'
/usr/bin/rake:19
rake中止!
未定义的方法“查找”#
/Library/Ruby/Gems/1.8/Gems/activemodel-3.0.4/lib/active_model/attribute_methods.rb:364:in'method_missing'
/Library/Ruby/Gems/1.8/Gems/activerecord-3.0.4/lib/active_record/attribute_methods.rb:46:in'method_missing'
/Users/josh.kerr/Documents/Projects/joshkerr.jekyll/Rakefile:28
/Users/josh.kerr/Documents/Projects/joshkerr.jekyll/Rakefile:20:in'each'
/Users/josh.kerr/Documents/Projects/joshkerr.jekyll/Rakefile:20
/Users/josh.kerr/Documents/Projects/joshkerr.jekyll/Rakefile:18:in'each'
/Users/josh.kerr/Documents/Projects/joshkerr.jekyll/Rakefile:18
/Library/Ruby/Gems/1.8/Gems/rake-0.8.7/lib/rake.rb:636:in'call'
/Library/Ruby/Gems/1.8/Gems/rake-0.8.7/lib/rake.rb:636:in'execute'
/Library/Ruby/Gems/1.8/Gems/rake-0.8.7/lib/rake.rb:631:in'each'
/Library/Ruby/Gems/1.8/Gems/rake-0.8.7/lib/rake.rb:631:in'execute'
/Library/Ruby/Gems/1.8/Gems/rake-0.8.7/lib/rake.rb:597:in'invoke_with_call_chain'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/Ruby/1.8/monitor.rb:242:在“同步”中
/Library/Ruby/Gems/1.8/Gems/rake-0.8.7/lib/rake.rb:590:in'invoke_with_call_chain'
/Library/Ruby/Gems/1.8/Gems/rake-0.8.7/lib/rake.rb:583:in'invoke'
/Library/Ruby/Gems/1.8/Gems/rake-0.8.7/lib/rake.rb:2051:in'invoke_task'
/Library/Ruby/Gems/1.8/Gems/rake-0.8.7/lib/rake.rb:2029:在“顶级”中
/Library/Ruby/Gems/1.8/Gems/rake-0.8.7/lib/rake.rb:2029:in'each'
/Library/Ruby/Gems/1.8/Gems/rake-0.8.7/lib/rake.rb:2029:在“顶级”中
/Library/Ruby/Gems/1.8/Gems/rake-0.8.7/lib/rake.rb:2068:在“标准异常处理”中
/Library/Ruby/Gems/1.8/Gems/rake-0.8.7/lib/rake.rb:2023:在“顶级”中
/Library/Ruby/Gems/1.8/Gems/rake-0.8.7/lib/rake.rb:2001:in'run'
/Library/Ruby/Gems/1.8/Gems/rake-0.8.7/lib/rake.rb:2068:在“标准异常处理”中
/Library/Ruby/Gems/1.8/Gems/rake-0.8.7/lib/rake.rb:1998:in'run'
/Library/Ruby/Gems/1.8/Gems/rake-0.8.7/bin/rake:31
/usr/bin/rake:19:in“装载”
/usr/bin/rake:19
代码如下:
require 'rails/all'
require 'rake/clean'
require File.expand_path('../config/application', __FILE__)
require 'rubygems'
require 'sqlite3'
desc "This task is called by the Heroku cron add-on"
task :cron => :environment do
puts "Running cron at #{Time.now.strftime('%Y/%m/%d %H:%M:%S')}..."
require 'app/models/feeder'
num_feeds = 10
feedurls = ["http://twitter.com/statuses/user_timeline/2205491.rss","http://github.com/joshkerr.atom","http://gdata.youtube.com/feeds/base/users/joshkerr/uploads","http://api.flickr.com/services/feeds/photos_public.gne?id=95219360@N00&lang=en-us&format=rss_200","http://www.google.com/reader/public/atom/user%2F00755727578217480286%2Fstate%2Fcom.google%2Fbroadcast"]
feedurls.each do |feed|
rawfeed = Feedzirra::Feed.fetch_and_parse(feed)
for i in 0..num_feeds do
# Database call
fed = Feeder.new
fed.title = rawfeed.entries[i].title
fed.published = rawfeed.entries[i].published
fed.url = rawfeed.entries[i].url
fed.feed_id = rawfeed.entries[i].entry_id
fed.find(1) # <- FAILS HERE!!!
#if not fed.Find(1) then
if fed.url.include? "twitter.com" then
fed.feed_service="twitter"
elsif fed.url.include? "github.com" then
fed.feed_service="github"
elsif fed.url.include? "flickr.com" then
fed.feed_service="flickr"
elsif fed.url.include? "youtube.com" then
fed.feed_service="youtube"
elsif fed.feed_id.include? "google.com" then
fed.feed_service="reader"
else
fed.feed_service = "reader"
end
fed.save
#end
end
end
puts "Done creating feed"
puts "done."
end
require'rails/all'
需要“耙/清洁”
需要文件。展开\u路径(“../config/application”,\u文件\u)
需要“rubygems”
需要'sqlite3'
desc“此任务由Heroku cron插件调用”
任务:cron=>:环境do
将“在#{Time.now.strftime(“%Y/%m/%d%H:%m:%S”)运行cron…”
需要“应用程序/型号/馈线”
num_feeds=10
feedurls=[”http://twitter.com/statuses/user_timeline/2205491.rss","http://github.com/joshkerr.atom","http://gdata.youtube.com/feeds/base/users/joshkerr/uploads","http://api.flickr.com/services/feeds/photos_public.gne?id=95219360@N00&lang=en us&format=rss_200“,"http://www.google.com/reader/public/atom/user%2F00755727578217480286%2Fstate%2Fcom.google%2Fbroadcast"]
feedURL.each do| feed|
rawfeed=Feedzirra::Feed.fetch_和_解析(Feed)
对于0中的i..num_提要
#数据库调用
fed=feed.new
fed.title=rawfeed.entries[i].title
fed.published=rawfeed.entries[i].已发布
fed.url=rawfeed.entries[i].url
fed.feed\u id=rawfeed.entries[i]。entry\u id
fed.find(1)#find
是ActiveRecord
类上的一个方法,并且没有在ActiveRecord
对象的实例上定义。因此,要查找ID为1的Feeder
,可以调用Feeder.find(1)
我注意到的另一件事是:行task:cron=>:environment
意味着环境已经被加载了——这包括rails/all
,rubygems
(您使用的是rails 3,它使用的是Bundler),sqlite3
(假设它在您的Gemfile
中,并且您已经运行了bundle install
来生成您的Gemfile.lock
,以及您的所有模型。尝试删除所有requires
行,看看您的rake任务是否仍在执行