如何赋予通过 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
我正在将我的 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