想请教一下 运行rails server -u webrick -e production -b 0.0.0.0 报错 是 ?
Resolving dependencies...
=> Booting WEBrick
=> Rails 6.1.7.7 application starting in production http://0.0.0.0:3000
=> Run bin/rails server --help
for more startup options
Exiting
Traceback (most recent call last):
73: from bin/rails:4:in <main>'
72: from bin/rails:4:in
require'
71: from /home/redmine/.rvm/gems/ruby-2.7.3/gems/railties-6.1.7.7/lib/rails/commands.rb:18:in <top (required)>'
70: from /home/redmine/.rvm/gems/ruby-2.7.3/gems/railties-6.1.7.7/lib/rails/command.rb:48:in
invoke'
69: from /home/redmine/.rvm/gems/ruby-2.7.3/gems/railties-
......................................
6.1.7.7/lib/active_storage/engine.rb:137:in `block (2 levels) in ': Couldn't find Active Storage configuration in /var/www/redmine-4.2.2/config/storage.yml (RuntimeError)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您提供的错误信息,问题的核心是 Rails 应用在启动时无法找到 Active Storage 的配置文件 config/storage.yml
,导致抛出以下错误:
Couldn't find Active Storage configuration in /var/www/redmine-4.2.2/config/storage.yml (RuntimeError)
以下是解决该问题的详细步骤和分析:
Active Storage 是 Rails 提供的一个用于文件上传和存储的功能模块。从 Rails 5.2 开始,Active Storage 成为 Rails 默认的一部分。如果您的应用启用了 Active Storage 功能,但缺少 config/storage.yml
文件,Rails 在启动时会尝试加载该文件并抛出上述错误。
根据错误堆栈信息,问题的根本原因是: - 缺少 config/storage.yml
文件:Rails 在生产环境中默认需要该文件来配置文件存储后端(如本地存储、Amazon S3 等)。 - 未正确初始化 Active Storage:如果项目中启用了 Active Storage,但未执行相关初始化命令,也可能导致此问题。
首先确认您的项目是否确实需要使用 Active Storage 功能。如果不需要,可以通过以下方式禁用它: - 打开 config/application.rb
文件,注释掉或删除以下代码(如果有):
require "active_storage/engine"
storage.yml
文件如果您的项目需要使用 Active Storage,请按照以下步骤生成并配置 config/storage.yml
文件: 1. 生成 Active Storage 配置文件
在项目根目录下运行以下命令:
rails active_storage:install
该命令会生成一个默认的 config/storage.yml
文件。
编辑 storage.yml
文件
根据您的存储需求,修改 config/storage.yml
文件。例如:
local:
service: Disk
root: <%= Rails.root.join("storage") %>
amazon:
service: S3
access_key_id: YOUR_ACCESS_KEY_ID
secret_access_key: YOUR_SECRET_ACCESS_KEY
region: YOUR_REGION
bucket: YOUR_BUCKET_NAME
设置默认存储服务
在 config/environments/production.rb
文件中,添加以下配置以指定默认存储服务:
config.active_storage.service = :local
如果使用 S3,则将 :local
替换为 :amazon
。
Active Storage 需要一些数据库表来管理文件元数据。运行以下命令以创建所需的表:
rails db:migrate
完成上述配置后,重新启动 Rails 服务器:
rails server -u webrick -e production -b 0.0.0.0
确保依赖已安装
如果项目中使用了第三方存储服务(如 Amazon S3),请确保相关 Gem 已正确安装。例如,S3 存储需要 aws-sdk-s3
Gem。您可以在 Gemfile
中添加以下内容并运行 bundle install
:
gem 'aws-sdk-s3', require: false
检查环境变量
如果使用外部存储服务(如 S3),请确保相关环境变量(如 ACCESS_KEY_ID
和 SECRET_ACCESS_KEY
)已正确配置。
权限问题
如果使用本地存储,请确保 Rails 应用对 storage
目录具有读写权限。
通过上述步骤,您可以解决因缺少 config/storage.yml
文件而导致的启动失败问题。如果问题仍然存在,请检查以下内容: - 是否有其他插件或 Gem 引入了 Active Storage。 - 是否存在其他未满足的依赖或配置问题。
希望以上解答能够帮助您解决问题!您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。
PolarDB 是阿里云自研的云原生数据库产品家族,采用存储计算分离、软硬一体化设计,既拥有分布式设计的低成本优势,又具有集中式的易用性,可满足大规模应用场景需求。 2021年,阿里云先后宣布PolarDB PostgreSQL版与PolarDB分布式版开源,并持续推动开源版本迭代和演进,助力开发者通过开源版本快速使用阿里云数据库产品技术,并参与产品迭代中来。 开源历程参见:OpenPolarDB.com/about