Как мне предоставить сценарию Ruby, выполняемому через консоль Rails, разрешения на запись в Digital Ocean?

#ruby-on-rails #ruby #ruby-on-rails-3.2 #digital-ocean

#ruby-на-рельсах #рубин #ruby-on-rails-3.2 #digital-ocean #ruby-on-rails #ruby

Вопрос:

Я развертываю свое приложение Rails в Digital Ocean.

Мне нужно запустить пользовательский скрипт Ruby через консоль Rails (или даже в очереди заданий), и в некоторых случаях я хочу, чтобы он создал файл и сохранил его в моем 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
  

Прямо сейчас я просто запускаю его как MyScript.run в командной строке в консоли Rails.

Как мне это сделать?

Комментарии:

1. вы пробовали изменять разрешения папки приложения? что-то, как было предложено здесь

2. @UdAY это предложение не оправдало себя. У меня это сработало. Вы не могли бы написать полный ответ, и я приму его. Постарайтесь сделать это как можно более всеобъемлющим, т. Е. Указания о том, как обнаружить пользователей в системе и пользователя, который запускает скрипт, а затем как изменить разрешения папки. Я всегда мог это сделать, но для вас это простой способ заработать несколько очков, тем более, что вы указали мне правильное направление. Спасибо!

Ответ №1:

Вам нужно предоставить необходимые разрешения папки для 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