繁体   English   中英

在生产环境中运行时,Rails要求“无此类文件加载”错误

[英]Rails Require `No Such File to Load` Error When Running in Production

development模式下本地运行时,我的rails应用程序可以工作。 当我尝试在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的文件。

我不明白红宝石在寻找什么,或者为什么找不到它。

您的应用正在尝试加载../../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文件,并引发错误。 修复有两个方面。

  1. 不要在Rails的特殊文件夹(例如myapp/app/model放置任何非特定于应用程序的自定义文件,而不要在应用程序根目录下为此类事情创建您自己的目录。
  2. 指定相对路径时,请使用require_relative而不是require

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM