【问题标题】:LoadError: cannot load such file -- travis on Heroku Ruby on RailsLoadError: cannot load such file -- travis on Heroku Ruby on Rails
【发布时间】:2016-10-11 22:17:08
【问题描述】:

我正在将 Travis CI 用于 Ruby on Rails 应用程序,并且我的构建成功并推送到 Heroku。当我尝试检查 Heroku 上的端点时,出现应用程序错误。

我已通过从我的应用程序的根目录运行 heroku rake db:migrate --app AppNameHere 来调查此问题,它会填充以下错误:

Running rake db:migrate on lawville... up, run.9338 (Free)
rake aborted!
LoadError: cannot load such file -- travis
/app/config/application.rb:11:in `require'
/app/config/application.rb:11:in `<top (required)>'
/app/Rakefile:4:in `require'
/app/Rakefile:4:in `<top (required)>'
/app/vendor/bundle/ruby/2.2.0/gems/rake-11.3.0/exe/rake:27:in `<top (required)>'

app/config/application.rb(注意错误中的第 11 行是 `require 'travis')

require File.expand_path('../boot', __FILE__)

require 'rails/all'
require 'active_model/railtie'
require 'active_job/railtie'
require 'active_record/railtie'
require 'action_controller/railtie'
require 'action_mailer/railtie'
require 'action_view/railtie'
require 'sprockets/railtie'
require 'travis'
require 'nokogiri'
require 'carrierwave'
require 'simple_form'
require 'social-share-button'
require 'redactor-rails'
require 'devise'

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)

module LawVille
  class Application < Rails::Application
    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration should go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded.

    # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
    # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
    # config.time_zone = 'Central Time (US & Canada)'

    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
    # config.i18n.default_locale = :de

    # Do not swallow errors in after_commit/after_rollback callbacks.
    config.active_record.raise_in_transactional_callbacks = true
  end
end

Travis Build(以防万一可以解决我的问题)

https://travis-ci.org/AfolabiOlaoluwa/LawVille/builds/166891343

我的应用程序与 application.rb 中的内容一起用于开发。

我可以做些什么来解决这个问题?提前致谢。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 heroku


    【解决方案1】:

    我发现导致问题的原因是我在开发组中有我的 gem,这是错误的,进而导致 Heroku 出现加载错误。

    在从开发组中删除 gem 并使其成为全球性之后,我还从我的 config/application.rb 中删除了我自己需要的所有 gem,例如我的 application.rb 变为:

    require File.expand_path('../boot', __FILE__)
    
    require 'rails/all'
    require 'active_model/railtie'
    require 'active_job/railtie'
    require 'active_record/railtie'
    require 'action_controller/railtie'
    require 'action_mailer/railtie'
    require 'action_view/railtie'
    require 'sprockets/railtie'
    
    # Require the gems listed in Gemfile, including any gems
    # you've limited to :test, :development, or :production.
    Bundler.require(*Rails.groups)
    
    module LawVille
      class Application < Rails::Application
        # Settings in config/environments/* take precedence over those specified here.
        # Application configuration should go into files in config/initializers
        # -- all .rb files in that directory are automatically loaded.
    
        # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
        # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
        # config.time_zone = 'Central Time (US & Canada)'
    
        # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
        # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
        # config.i18n.default_locale = :de
    
        # Do not swallow errors in after_commit/after_rollback callbacks.
        config.active_record.raise_in_transactional_callbacks = true
      end
    end
    

    然后它起作用了。

    【讨论】:

      【解决方案2】:

      从 application.rb 中删除 require 'travis'

      很确定 travis 只是有一个钩子,可以将帖子推送到您的项目 repo。这对您在开发过程中没有出错的原因是因为您(很可能)安装了 travis gem。然而 Heroku 没有。从而导致生产失败。

      如需更清晰的图片,请参阅Travis Ruby Docs

      【讨论】:

      • @HunterTCapman 但我删除了任何所需的宝石,我的本地应用程序中断的次数越多。
      • 是的,这很有趣。你可以走拼布路线。尝试其中的一个require 'travis' if ENV['RACK_ENV'] == 'development'require 'travis' unless Rails.env.production?
      猜你喜欢
      • 1970-01-01
      • 2016-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-16
      相关资源
      最近更新 更多