Как я могу исправить ошибку `undefined method` railtie_namespace`` при запуске `rails generate` на движке - PullRequest
0 голосов
/ 11 апреля 2020

Проблема заключается в следующем:

# 1) Create full engine `myengine` with Rails 4.2.10
rails _4.2.10_ plugin new myengine --full

# 2) Try to rails generate 
$ bin/rails g
/usr/local/lib/ruby/gems/2.6.0/gems/railties-4.2.10/lib/rails/engine/commands.rb:17:in `<top (required)>': 
  undefined method `railtie_namespace' for nil:NilClass (NoMethodError)

1 Ответ

0 голосов
/ 11 апреля 2020

Проблема возникает, когда вы создаете символическую ссылку на каталог движка и переходите туда по следующей ссылке:

cd path/to/somewhere
rails _4.2.10_ plugin new myengine --full
ln -s path/to/somewhere/myengine ~/favorite/myengine

cd ~/favorite/myengine

./bin/rails g

Если вы это сделаете, вы столкнетесь с ошибкой. Чтобы устранить проблему, измените некоторые строки в верхней части bin/rails следующим образом:

# from 
ENGINE_ROOT = File.expand_path('../..', __FILE__)
ENGINE_PATH = File.expand_path('../../lib/myengine/engine', __FILE__)

# to
require 'pathname'
ENGINE_ROOT = Pathname.new(__FILE__).realpath + '../..'
ENGINE_PATH = ENGINE_ROOT + 'lib/myengine/engine'

См. Реализацию ::Rails::Engine.find о том, почему исправление работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...