【问题标题】:rails command not working in mountable engine root directoryrails 命令在可挂载引擎根目录中不起作用
【发布时间】:2012-02-23 21:12:04
【问题描述】:

关于可安装在轨道上的引擎的问题。首先这些是我正在使用的版本;

$ rails -v
  Rails 3.2.1
$ ruby -v
  ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]

我用这个创建可挂载引擎:

$ rails plugin new testEngine --mountable
  create  
  create  README.rdoc
  create  Rakefile
  create  testEngine.gtestEnginepec
  create  MIT-LICENSE
  create  .gitignore
  create  Gemfile
  create  app
  create  app/controllers/testEngine/application_controller.rb
  create  app/helpers/testEngine/application_helper.rb
  create  app/mailers
  create  app/models
  create  app/views/layouts/testEngine/application.html.erb
  create  app/assets/images/testEngine
  create  app/assets/images/testEngine/.gitkeep
  create  config/routes.rb
  create  lib/testEngine.rb
  create  lib/tasks/testEngine_tasks.rake
  create  lib/testEngine/version.rb
  create  lib/testEngine/engine.rb
  create  app/assets/stylesheets/testEngine/application.css
  create  app/assets/javascripts/testEngine/application.js
  create  script
  create  script/rails
  create  test/test_helper.rb
  create  test/testEngine_test.rb
  append  Rakefile
  create  test/integration/navigation_test.rb
  vendor_app  test/dummy

  run  bundle install
  Fetching source index for http://rubygtestEngine.org/
  Using rake (0.9.2.2) 
  Using i18n (0.6.0) 
  Using multi_json (1.1.0) 
  Using activesupport (3.2.1) 
  Using builder (3.0.0) 
  Using activemodel (3.2.1) 
  Using erubis (2.7.0) 
  Using journey (1.0.3) 
  Using rack (1.4.1) 
  Using rack-cache (1.1) 
  Using rack-test (0.6.1) 
  Using hike (1.2.1) 
  Using tilt (1.3.3) 
  Using sprockets (2.1.2) 
  Using actionpack (3.2.1) 
  Using mime-types (1.17.2) 
  Using polyglot (0.3.3) 
  Using treetop (1.4.10) 
  Using mail (2.4.1) 
  Using actionmailer (3.2.1) 
  Using arel (3.0.2) 
  Using tzinfo (0.3.31) 
  Using activerecord (3.2.1) 
  Using activeresource (3.2.1) 
  Using bundler (1.0.22) 
  Using rack-ssl (1.3.2) 
  Using json (1.6.5) 
  Using rdoc (3.12) 
  Using thor (0.14.6) 
  Using railties (3.2.1) 
  Using rails (3.2.1) 
  Using testEngine (0.0.1) from source at /private/var/www/html/development/projects/testEngine
  Using jquery-rails (2.0.0) 
  Using sqlite3 (1.3.5) 
  Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

当我在引擎根目录(而不是 dummyapp)中使用 rails 命令时,我收到以下错误:

$ rails -v
script/rails:7:in `require': no such file to load -- rails/all (LoadError)
from script/rails:7

这是我在 script/rails 中的 rails 文件:

$ cat script/rails 
#!/usr/bin/env ruby
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.

ENGINE_ROOT = File.expand_path('../..', __FILE__)
ENGINE_PATH = File.expand_path('../../lib/ems/engine', __FILE__)

require 'rails/all'
require 'rails/engine/commands'

该错误表明问题源于底部的两个导轨。我能做些什么来解决这个问题吗?如果无法使用 rails,我将无法使用 rails 命令为我提供的任何工具,例如脚手架等。

感谢您的帮助,如果您需要更多信息,请告诉我。

【问题讨论】:

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 rails-engines


【解决方案1】:

试试这个:

script/rails console

或者:

bundle exec rails console

【讨论】:

  • 第一个由于缺少需求的明显原因而不起作用,但是第二个对我有用。知道为什么 rails 脚本不起作用吗?
  • 可能是因为路径中的 rails 二进制文件指向不同的 (2.x?) 版本。使用 bundle exec 确保使用 Gemfile 中的版本。
  • 我遇到了类似的问题。 @vincent:你能解释一下“使用 RVM 解决问题”是什么意思吗?您是否通过 RVM 安装了 Ruby 1.8.7?
  • 基本上我的问题是我使用的是旧版本的 Rails。尽管 .gemspec 声明我应该使用 3.2.1 为了解决这个问题,我只需要确保我使用的是正确的 ruby​​ 版本。为此,我只是确保我使用 rvm 来管理我的 ruby​​ 版本。您可以使用rvm use 1.9.3 来执行此操作,或者您可以使用相同的命令在您的rails 根目录中拥有一个.rvmrc 文件,这将确保当您cd 进入rails 根目录时rvm 总是切换到正确的ruby 版本。跨度>
猜你喜欢
  • 1970-01-01
  • 2020-02-12
  • 2019-09-04
  • 2014-01-08
  • 2012-06-09
  • 1970-01-01
  • 1970-01-01
  • 2019-08-07
  • 1970-01-01
相关资源
最近更新 更多