【问题标题】:cannot load such file -- Twitter, sinatra app on Heroku无法加载此类文件——Twitter、Heroku 上的 sinatra 应用
【发布时间】:2017-03-01 20:19:38
【问题描述】:

我已经能够使用 sinatra 在本地运行我的应用程序,但是当我将它推送到 heroku 时,我不断收到此错误:

/app/lib/initializers/twitter.rb:1:in `require': cannot load such file -- Twitter

我授权自己在初始化文件中使用 twitter gem。

init.rb

APP_ROOT = File.dirname(__FILE__)
require 'sinatra'
require 'json'
require File.join(APP_ROOT,"lib","bot")
require './lib/bot'

get '/' do
    File.read(File.join( APP_ROOT, 'index.html'))
end

lib/initializers/twitter.rb

require 'Twitter'

$client = Twitter::REST::Client.new do |config|
  config.consumer_key        = ENV["CONSUMER_KEY"] 
  config.consumer_secret     = ENV["CONSUMER_SECRET"] 
  config.access_token        = ENV["ACCESS_TOKEN"] 
  config.access_token_secret = ENV["ACCESS_TOKEN_SECRET"]
end

宝石文件

ruby '2.3.1'
source 'https://rubygems.org'
gem 'rack'
gem 'twitter'
gem 'sinatra'
gem "sinatra-activerecord"
gem 'thin'
gem 'json'

config.ru

require './lib/initializers/secrets'
require './lib/initializers/twitter'
require './init'
run Sinatra::Application

即使对于 rake 任务,我在本地也不断收到以下错误:

LoadError: cannot load such file -- active_record/railties/databases.rake
/Users/sahil/.rvm/gems/ruby-2.3.1/gems/sinatra-activerecord-2.0.11/lib/sinatra/activerecord/rake.rb:1:in `load'
/Users/sahil/.rvm/gems/ruby-2.3.1/gems/sinatra-activerecord-2.0.11/lib/sinatra/activerecord/rake.rb:1:in `<top (required)>'
/Users/sahil/Documents/work/practice/twitter_bot/Rakefile:2:in `<top (required)>'
/Users/sahil/.rvm/gems/ruby-2.3.1/gems/rake-11.3.0/exe/rake:27:in `<top (required)>'
/Users/sahil/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `eval'
/Users/sahil/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `<main>'
LoadError: cannot load such file -- sinatra/activerecord/rake
/Users/sahil/Documents/work/practice/twitter_bot/Rakefile:2:in `<top (required)>'
/Users/sahil/.rvm/gems/ruby-2.3.1/gems/rake-11.3.0/exe/rake:27:in `<top (required)>'
/Users/sahil/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `eval'
/Users/sahil/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `<main>'
(See full trace by running task with --trace)

耙文件

require "./lib/bot"
require "sinatra/activerecord/rake"
Dir.glob('lib/tasks/*.rake').each { |r| load r}

lib/tasks/scheduler.rake

require './../bot'

desc "This task is called by the Heroku scheduler add-on"

task :fav_tweets => :environment do
    bot = Bot.new

end

如何首先在本地运行调度程序,以便将其添加到 heroku?

【问题讨论】:

    标签: ruby heroku twitter sinatra


    【解决方案1】:

    你似乎在跑步:

    require 'Twitter'
    

    注意大写T。如果你改为运行它是否有效:

    require 'twitter'
    

    看起来您的本地计算机正在运行 OS X,它通常使用不区分大小写的 HFS+ 文件系统。

    Heroku 在 Linux 系统上运行,这些系统通常使用区分大小写的文件系统。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-04
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 2021-05-16
      • 1970-01-01
      相关资源
      最近更新 更多