gpt4 book ai didi

ruby-on-rails-4 - 如果不先安装 gem 本身,就无法在 Gem/Engine 项目中运行 Rails

转载 作者:行者123 更新时间:2023-12-04 01:15:05 25 4
gpt4 key购买 nike

我刚刚重新检查了我的 Rails Engine 项目,当(在 bundle install 之后)我调用了 rails -v在它的根目录中,我得到一个 LoadError其中 Rails 似乎正在寻找我正在尝试构建的 gem/引擎:

my-engine dmoles$ rails -v
/Users/dmoles/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/dependency.rb:315:in `to_specs': Could not find 'my-engine' (>= 0) among 117 total gem(s) (Gem::LoadError)
Checked in 'GEM_PATH=/Users/dmoles/.rvm/gems/ruby-2.2.1:/Users/dmoles/.rvm/gems/ruby-2.2.1@global', execute `gem env` for more information
from /Users/dmoles/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/dependency.rb:324:in `to_spec'
from /Users/dmoles/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_gem.rb:64:in `gem'
from /Users/dmoles/.rvm/gems/ruby-2.2.1/bin/rails:22:in `<main>'

运行 gem env正如所建议的那样,没有更多的启示:
my-engine dmoles$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 2.4.6
- RUBY VERSION: 2.2.1 (2015-02-26 patchlevel 85) [x86_64-darwin14]
- INSTALLATION DIRECTORY: /Users/dmoles/.rvm/gems/ruby-2.2.1
- RUBY EXECUTABLE: /Users/dmoles/.rvm/rubies/ruby-2.2.1/bin/ruby
- EXECUTABLE DIRECTORY: /Users/dmoles/.rvm/gems/ruby-2.2.1/bin
- SPEC CACHE DIRECTORY: /Users/dmoles/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /Users/dmoles/.rvm/rubies/ruby-2.2.1/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-14
- GEM PATHS:
- /Users/dmoles/.rvm/gems/ruby-2.2.1
- /Users/dmoles/.rvm/gems/ruby-2.2.1@global
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /Users/dmoles/.rvm/gems/ruby-2.2.1/bin
- /Users/dmoles/.rvm/gems/ruby-2.2.1@global/bin
- /Users/dmoles/.rvm/rubies/ruby-2.2.1/bin
- /Users/dmoles/.rvm/bin
- /Users/dmoles/bin
- /usr/local/bin
- /usr/bin
- /bin
- /usr/sbin
- /sbin
- /usr/local/git/bin

我可以很好地构建/安装 gem
gem build my-engine.gemspec
gem install my-engine-0.0.1.gem

之后 rails -v开始工作。* 不过,这似乎不是必需的,这让我担心 Rails 可能使用的是代码的构建/安装版本,而不是实时源代码。我究竟做错了什么?

* 也就是说,它运行,即使它提示“Bundler 正在使用为不同的 gem 创建的 binstub”。可能是因为它不喜欢 gem 被命名为 my-engine 的事实。但 ENGINE_PATHmy/engine ?

最佳答案

打电话rails -v没有意义在引擎根目录中,因为引擎毕竟是一个 gem,需要加载到 rails 应用程序中,除非您将其结构化为普通的 rails 应用程序而不是引擎 gem。

所以基本上,当你运行 rails -v ,它会尝试将您的引擎作为 gem 加载,而不是作为普通的 rails 应用程序加载,因此如果它没有安装在您的环境中,它会提示。

关于ruby-on-rails-4 - 如果不先安装 gem 本身,就无法在 Gem/Engine 项目中运行 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29616769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com