我的rails应用程序在development
模式下本地运行时有效。当我尝试在production
模式下运行时,我在本地和我尝试设置AWS Ubuntu服务器时都会遇到此问题。
RAILS_ENV=production rails s
=> Booting Puma
=> Rails 5.1.4 application starting in production
=> Run `rails server -h` for more startup options
Exiting
/usr/local/lib/ruby/gems/2.4.0/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:292:in `require': No such file to load -- ../../config/environment.rb (LoadError)
我无法准确理解相对路径的相对含义。 myrailsapp/config/environment.rb
处有一个文件指出require_relative 'application'
。名为application.rb
的同一目录中有一个文件。
我无法理解ruby正在寻找什么,或者为什么找不到它。
答案 0 :(得分:1)
您的应用正在尝试加载../../config/environment.rb
但无法找到它。它似乎特定于您的生产环境,因此可能在/config/environment/production.rb或其他一些特定于生产的配置/文件中设置,这些配置/文件在启动时初始化。
另一个问题是#require
需要绝对路径。要从相对路径创建绝对路径,请使用
require_relative "../config/environment"
或类似
require File.expand_path('../../config/environment', __FILE__)
编辑:更具体一些。令人反感的require '../../config/environment'
是OP自己制作的副本,例如:它不是由Rails创建的模型,视图,控制器或其他文件,并且未被Rails应用程序引用。但是,只有在生产模式下,Rails才会出现在其目录中的rb文件,包括此自定义脚本,并引发错误。修复是双重的。
myapp/app/model
)中放置任何自定义的非应用程序专用文件,而是在app根目录下创建自己的目录。require_relative
而不是require
。