#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