如何赋予通过 Rails 控制台在 Digital Ocean 上执行的 Ruby 脚本写入权限?

How do I give a Ruby script executed via Rails console write permissions on Digital Ocean?

我正在将我的 Rails 应用程序部署到 Digital Ocean。

我需要通过 Rails 控制台(甚至在作业队列上)运行 自定义 ruby 脚本,在某些情况下我希望它创建一个文件并存储它在我的 config 目录中。

具体来说,这是设置的样子:

Money.default_bank = MoneyOXR::Bank.new(
  app_id: ENV["APP_ID"],
  cache_path: 'config/oxr.json',
  max_age: 86400
)

因此,需要发生的是每当它 运行 需要创建 config/oxr.json

然而,当我运行它时,是这样的:

Errno::EACCES: Permission denied @ rb_sysopen - config/oxr.json

现在,我只是在 Rails 控制台的命令行 运行 将其设置为 MyScript.run

我该怎么做?

您需要为 create/write 文件授予必要的文件夹权限。您可以通过以下方式做到这一点:

chmod -R g+w app_path/config

这将授予对应用 config 文件夹的写入权限。

如果您想授予特定用户权限,则:

=> w || who; #list all of the currently logged in users
=> chgrp -R user_name app_path/config
=> chmod -R g+w app_path/config

OP编辑

同样有效的是:sudo chmod 777 oxr.json