我有一个关于Rails引擎的问题,在Rails指南中没有提到Rails引擎.我希望能在这里得到它.
我有一个引擎,例如,名为my_engine,还有一个名为my_app的应用程序.
出于开发目的,在my_app的Gemfile中,我只是简单地将my_engine包含在以下行中,使用:file key.
#my_app/Gemfile ... gem "my_engine",:path => "./../my_engine" ...
和my_engine结构是这样的:
. ├── Gemfile ├── Gemfile.lock ├── app │ ├── ... | |... | ├── config │ ├── locales │ │ └── models │ │ └── products │ │ ├── en.yml │ │ └── zh-TW.yml │ └── routes.rb ├── lib │ ├── my_engine │ │ ├── engine.rb │ │ └── version.rb │ ├── my_engine.rb │ └── tasks │ └── my_engine_tasks.rake
我发现当我尝试检查my_app下的I18n.load_path时,没有任何单一路径指向my_engine,这意味着,my_app不会加载my_engine的语言环境事务.
>>rails console Loading development environment (Rails 4.0.2) 2.1.0 :001 >I18n.load_path.each { |x| puts x }
我是否遗漏了一些关于在my_engine中加载语言环境的配置或一些重要步骤?
解决方法
我正在使用
Rails 4.1.6
我在Gemfile中安装了我的引擎
gem 'core',path: "core"
当我检查我的负载路径
I18n.load_path.find_all { |p| p.match("core") }.each { |p| puts p }
我看到我的引擎中包含了语言环境
/absolute_path/core/config/locales/de.yml
/absolute_path/core/config/locales/en.yml
因此默认rails正在加载您的引擎区域设置
它也在文档中提到过
http://edgeapi.rubyonrails.org/classes/Rails/Engine.html
Then ensure that this file is loaded at the top of your config/application.rb (or in your Gemfile) and it will automatically load models,controllers and helpers inside app,load routes at config/routes.rb,load locales at config/locales/,and load tasks at lib/tasks/.