ruby-on-rails - Rails 作为守护进程启动时找不到目录
问题描述
我遇到了一个我还无法解决的特定问题。
以下是一些一般信息:
- Rails 4.2 项目
- 通过 docker-compose 本地部署
在 app/assets/images/avatars 中有一个包含 avatar-images 的文件夹。每次创建帐户时,注册控制器(创建方法的自定义覆盖 - 见下文)应该从该文件夹中选择一个随机图像。
class MyregistrationsController < Devise::RegistrationsController
def create
images = Dir.glob("app/assets/images/avatars/*.png")
if images.size > 2
begin
the_avatar = images[rand(images.size)].split("/").last.split(".").first
rescue => err
the_avatar = ""
end
else
redirect_to root_path(anchor: "account"), alert: "cannot find avatar images"
return
end
# ...
end
end
这始终有效(所有环境),除了我将应用程序作为守护程序启动(rails server -d)。然后 Dir.pwd 只导致“/”并且找不到任何文件夹(images.size == 0)。当我不将它作为守护进程启动时,它会正确生成“/rails-app/home”(这是项目目录)并找到所有图像。
但是,应用程序的其余部分工作正常。
(在容器内)这不会产生任何问题
RAILS_ENV=production rails server -b 0.0.0.0 -p 3000
但这确实:
RAILS_ENV=production rails server -b 0.0.0.0 -p 3000 -d
我该如何进一步分析?请告诉我是否缺少任何信息。我会尽快添加。
解决方案
推荐阅读
- azure - 为什么我的 IdentityServer4 应用程序无法在 Azure WebApp 托管环境中启动?
- reactjs - 如何删除使用 React Router 创建的一些额外空格
- python - 如何从已知参数构造相机矩阵
- swift - 从单独的类调用函数不起作用
- android - Firebase Crashlytics - 获取堆栈跟踪信息以在 CrashlyticsListener.crashlyticsDidDetectCrashDuringPreviousExecution() 期间显示
- jquery - 如何将完整的日历日期添加到动态文本框
- .htaccess - 我想使用 url 重写来缩短我的 url,但它不起作用
- javascript - 调用函数时如何解决函数范围问题
- javascript - 客户端从C#压缩字符串解压回字符串
- node.js - 端口转发不适用于 Nodejs 应用程序