Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 即使I';我包括环境_Ruby_Ruby On Rails 3_Rake - Fatal编程技术网

Ruby 即使I';我包括环境

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

我有一个带有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: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任务是否仍在执行