Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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 on rails 遇到;“未初始化常量”;带宝石_Ruby On Rails_Ruby_Cron_Whenever - Fatal编程技术网

Ruby on rails 遇到;“未初始化常量”;带宝石

Ruby on rails 遇到;“未初始化常量”;带宝石,ruby-on-rails,ruby,cron,whenever,Ruby On Rails,Ruby,Cron,Whenever,尝试在今天的任何时候使用。遇到此错误未初始化的常数中心控制器::RedditScrapper。。。我该如何解决这个问题 当前控制器 class EntriesController < ApplicationController def index @entries = Entry.all end def scrape RedditScrapper.scrape respond_to do |format| format.html { redirec

尝试在今天的任何时候使用
。遇到此错误
未初始化的常数中心控制器::RedditScrapper
。。。我该如何解决这个问题

当前控制器

class EntriesController < ApplicationController


def index
  @entries = Entry.all
end

def scrape

    RedditScrapper.scrape

    respond_to do |format|
      format.html { redirect_to entries_url, notice: 'Entries were successfully scraped.' }
      format.json { entriesArray.to_json }
    end
  end

end
请帮我找出正确的跑步者任务来写

应用程序.rb

require 'open-uri'

module RedditScrapper
  def self.scrape
    doc = Nokogiri::HTML(open("https://www.reddit.com/"))

    entries = doc.css('.entry')
    entriesArray = []
    entries.each do |entry|
      title = entry.css('p.title > a').text
      link = entry.css('p.title > a')[0]['href']
      entriesArray << Entry.new({ title: title, link: link })
    end

    if entriesArray.map(&:valid?)
      entriesArray.map(&:save!)
    end
  end
end
RAILS_ROOT = File.expand_path(File.dirname(__FILE__) + '/')

every 2.minutes do 
  runner "RedditScrapper.scrape", :environment => "development"
end
require_relative 'boot'

require 'rails/all'

Bundler.require(*Rails.groups)

module ScrapeModel
  class Application < Rails::Application
   config.autoload_paths << Rails.root.join('lib')
  end
end
需要相对的“启动”
需要“rails/all”
Bundler.require(*Rails.groups)
模块模型
类应用程序config.autoload_path据我所知,您已将
RedditScrapper
定义为一个模块,但您正试图将其用作一个类。。。(即对其调用方法)

您可以将其转换为一个类(只需将
module
更改为
class
),或将所有相关方法定义为
module\u function
s


鉴于您选择的用法,前者可能更可取。

据我所知,您已将
RedditScrapper
定义为一个模块,但您正试图将其用作一个类。。。(即对其调用方法)

您可以将其转换为一个类(只需将
module
更改为
class
),或将所有相关方法定义为
module\u function
s


鉴于您选择的用法,前者可能更可取。

Rails不会自动加载
lib
文件夹。您需要将以下行添加到
config/application.rb

config.autoload_paths << Rails.root.join('lib')

config.autoload\u路径Rails不会自动加载
lib
文件夹。您需要将以下行添加到
config/application.rb

config.autoload_paths << Rails.root.join('lib')

config.autoload\u路径我该怎么做?早些时候它是运行者“redditscraper.scrape”
。。但是遇到了问题。。。因此将其更改为
runner“EntriesController.new.scrape”,:environment=>“development”
…也就是说,我这样称呼它吗<代码>模块.redditscraper.scrape
?我该怎么做?早些时候它是运行者“redditscraper.scrape”
。。但是遇到了问题。。。因此将其更改为
runner“EntriesController.new.scrape”,:environment=>“development”
…也就是说,我这样称呼它吗
Module.redditscraper.scrape
?使用@spickermann solution并在schedule.rb中使用
redditscraper.scrape
,而不是调用controller。使用@spickermann solution并在schedule.rb中使用
redditscraper.scrape
,而不是调用controller。上面的
config/application.rb
是否正确?此外,我还更新了其他文件…@spikermann,好吧,这似乎起作用了,因为我不再收到那个错误。。。太好了。有其他问题,但将创建一个单独的问题帖子。。。谢谢。是的,你的
应用程序.rb
看起来不错。顺便问一下,你怎么知道Rails不会自动加载
lib
文件夹?因为这是一个常见问题,Rails改变了自动加载
lib
文件夹的行为。它在Rails 3.2之前一直存在,而在Rails 4.0之后就没有了。上面的
config/application.rb
是否正确?此外,我还更新了其他文件…@spikermann,好吧,这似乎起作用了,因为我不再收到那个错误。。。太好了。有其他问题,但将创建一个单独的问题帖子。。。谢谢。是的,你的
应用程序.rb
看起来不错。顺便问一下,你怎么知道Rails不会自动加载
lib
文件夹?因为这是一个常见问题,Rails改变了自动加载
lib
文件夹的行为。它在Rails 3.2之前就有了,而在Rails 4.0之后就没有了