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之后就没有了