【问题标题】:`require': cannot load such file -- rack-webconsole (LoadError)`require': 无法加载此类文件 -- rack-webconsole (LoadError)
【发布时间】:2014-11-11 03:28:35
【问题描述】:

我刚刚升级到 Yosemite,我在这台本地机器上运行了一个 Rails 3.2.18 应用程序。它运行良好(例如rails s 工作,rails c 工作等)但在清理 rvm 并重新捆绑后,运行 rails crails s 时出现此错误:

/Users/cweilemann/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.6.1/lib/bundler/runtime.rb:76:in `require': cannot load such file -- rack-webconsole (LoadError)
    from /Users/cweilemann/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.6.1/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
    from /Users/cweilemann/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.6.1/lib/bundler/runtime.rb:72:in `each'
    from /Users/cweilemann/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.6.1/lib/bundler/runtime.rb:72:in `block in require'
    from /Users/cweilemann/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.6.1/lib/bundler/runtime.rb:61:in `each'
    from /Users/cweilemann/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.6.1/lib/bundler/runtime.rb:61:in `require'
    from /Users/cweilemann/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.6.1/lib/bundler.rb:132:in `require'
    from /Users/cweilemann/Projects/railsapp/config/application.rb:7:in `<top (required)>'

config/application.rb 的第 7 行是:

Bundler.require(*Rails.groups(:assets => %w(development test)))

在我的 Gemfile 中,我有:

group :development do
  ...
  gem 'rack-webconsole-pry', :require => 'rack-webconsole'
  ...
end

如果我将gem 'rack-webconsole-pry', :require =&gt; 'rack-webconsole' 线移到group :development 之外,则应用程序会正常加载。如果我删除 :require =&gt; 'rack-webconsole',应用程序会正常加载。

这是打包程序的问题吗?还是 Rails 和 Yosemite 的问题?

更新

gem env

RubyGems Environment:
  - RUBYGEMS VERSION: 2.2.2
  - RUBY VERSION: 2.1.1 (2014-02-24 patchlevel 76) [x86_64-darwin12.0]
  - INSTALLATION DIRECTORY: /Users/cweilemann/.rvm/gems/ruby-2.1.1@railsapp
  - RUBY EXECUTABLE: /Users/cweilemann/.rvm/rubies/ruby-2.1.1/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/cweilemann/.rvm/gems/ruby-2.1.1@railsapp/bin
  - SPEC CACHE DIRECTORY: /Users/cweilemann/.gem/specs
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-12
  - GEM PATHS:
     - /Users/cweilemann/.rvm/gems/ruby-2.1.1@railsapp
     - /Users/cweilemann/.rvm/gems/ruby-2.1.1@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--no-ri --no-rdoc"
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/cweilemann/.rvm/gems/ruby-2.1.1@railsapp/bin
     - /Users/cweilemann/.rvm/gems/ruby-2.1.1@global/bin
     - /Users/cweilemann/.rvm/rubies/ruby-2.1.1/bin
     - /Users/cweilemann/.rvm/bin
     - /usr/local/bin
     - /usr/local/sbin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /usr/local/bin
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /opt/X11/bin

当我这样做时:bundle env

我明白了:

Bundler 1.6.1
Ruby 2.1.1 (2014-02-24 patchlevel 76) [x86_64-darwin12.0]
Rubygems 2.2.2
rvm 1.26.0 (latest)
GEM_HOME /Users/cweilemann/.rvm/gems/ruby-2.1.1@railsapp
GEM_PATH /Users/cweilemann/.rvm/gems/ruby-2.1.1@railsapp:/Users/cweilemann/.rvm/gems/ruby-2.1.1@global
rubygems-bundler (1.4.3)

Bundler settings
  without
    Set for your local app (/Users/cweilemann/Projects/railsapp/.bundle/config): "test:development"


Gemfile
source 'https://rubygems.org'
gem 'rails', '3.2.18'
gem 'rubyzip', '~>0.9.9'
gem 'pg'

...
...

group :development do
  gem "quiet_assets", ">= 1.0.1"
  gem "better_errors", ">= 0.3.2"
  gem "binding_of_caller", "~> 0.7.2"
  gem 'annotate' #puts comments in models/tests with db fields for a given domain
  gem 'debugger', "~> 1.6.6"
  gem 'rack-webconsole-pry', :require => 'rack-webconsole' #default activated by backtick.  may need rake patch task from this project's /lib/tasks
  gem 'foreman' #support to start multiple processes at once (server, resque workers, etc.)
  gem 'rails-erd' #generate ERD for domains. may require separate graphviz binary installation.
  #functional, but not commonly used
end

group :test, :development do
  gem 'rspec-rails', '~> 2.0'
  gem 'poltergeist'                         # See https://github.com/jonleighton/poltergeist for how to install phantomjs
  gem 'capybara'
  gem 'launchy'
  gem "api_matchers"
  gem "shoulda-matchers", ">= 2.6.2", require: false
  gem 'machinist', '~> 2.0'
  gem "guard", "~> 1.6.2"
  gem "spork", "~> 0.9.2"
  gem "guard-rspec", "~> 2.5.1"
  gem "guard-spork", "~> 1.4.0"
  gem 'rb-fsevent', "~> 0.9.4"
  gem 'rb-readline', "~> 0.5.1"
  gem "simplecov", "~> 0.7.1", :require => false
  gem 'puma'
  gem 'sql_queries_count'
end


Gemfile.lock

GIT
  remote: https://github.com/jwhitley/requirejs-rails.git
  revision: f2330104aeca4d193fd5680a22ae7eee85d814b5
  specs:
    requirejs-rails (0.9.1)
      railties (>= 3.1.1, < 4.1)

GEM
  remote: https://rubygems.org/
  specs:

    ...
    ...

    rack-webconsole-pry (0.1.9)
      json
      multi_json (>= 1.0.3)
      pry
      rack
    rails (3.2.18)
      actionmailer (= 3.2.18)
      actionpack (= 3.2.18)
      activerecord (= 3.2.18)
      activeresource (= 3.2.18)
      activesupport (= 3.2.18)
      bundler (~> 1.0)
      railties (= 3.2.18)
    ...
    ...


PLATFORMS
  ruby

DEPENDENCIES
  ...
  ...

  rack-webconsole-pry
  rails (= 3.2.18)
  ...

注意:出于安全考虑,我编辑了bundle env 列表,因为这是一个生产应用程序。

当我这样做时:bundle show --paths rack-webconsole-pry

我明白了:

Could not find gem 'rack-webconsole-pry'.
Did you mean rack-webconsole-pry?

【问题讨论】:

  • 我无法在我的机器上的新 Rails 项目中重现这一点。一些额外的信息会有所帮助:gem envbundle envbundle show --paths rack-webconsole-pry 的输出。我怀疑这与您的 rvm gemsets 有关。
  • @TimMoore 更新了请求的信息。非常感谢您的帮助!
  • 您可以尝试使用最新版本的 Bundler 吗? (运行gem install bundler 进行更新。)
  • 从头开始... 发现问题。答案如下。

标签: ruby-on-rails ruby-on-rails-3 bundler


【解决方案1】:

bundle env 的输出显示如下:

Bundler settings
  without
    Set for your local app (/Users/cweilemann/Projects/railsapp/.bundle/config): "test:development"

这意味着bundle install 将跳过在您的development 组中安装任何内容(以及test)。

从您的.bundle/config 文件中删除该行并再次运行bundle install,它应该会开始工作。

【讨论】:

  • 谢谢蒂姆!感谢您的宝贵时间!
【解决方案2】:

这似乎是rack-webconsole-pry 的问题。

这是 Gemfile:

source "https://rubygems.org"

group :development do
  gem 'rack-webconsole-pry', :require => 'rack-webconsole'
end

这里将这些 gem 安装到没有 gemset 的 Rubygems 系统 gem 中,并且一切正常:

$ bundle install --system
Using coderay 1.1.0
Using multi_json 1.10.1
Using method_source 0.8.2
Using json 1.8.1
Using rack 1.5.2
Using bundler 1.7.5
Using slop 3.6.0
Using pry 0.10.1
Using rack-webconsole-pry 0.1.9
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.
$ bundle check
The Gemfile's dependencies are satisfied
$ bundle exec bundle check
The Gemfile's dependencies are satisfied

这是我将这些 gem 安装到路径中而不是系统 gem 中,并且一切都非常糟糕:

$ bundle install --path gems
Fetching gem metadata from https://rubygems.org/..........
Using bundler 1.7.5
Installing method_source 0.8.2
Installing slop 3.6.0
Installing coderay 1.1.0
Installing rack 1.5.2
Installing multi_json 1.10.1
Installing pry 0.10.1
Installing json 1.8.1
Installing rack-webconsole-pry 0.1.9
Your bundle is complete!
It was installed into ./gems

$ bundle check
The Gemfile's dependencies are satisfied

$ bundle exec bundle check
Could not find coderay-1.1.0 in any of the sources
Run `bundle install` to install missing gems.

加载后,rack-webconsole-pry 会以某种方式破坏 gem 的加载方式,导致之后无法加载 gem。当你把它移出开发组时,它就不再需要了,所以一切都很好。当你把它放在开发组中时,它会被加载,但随后会破坏 gem 的加载方式,然后再也找不到实际安装的 gem 来加载它们。

【讨论】:

    猜你喜欢
    • 2014-05-27
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 2022-09-26
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多