Как изменить режим с чтения-записи на доступный только для чтения в объекте File-resource в Ruby? - PullRequest
0 голосов
/ 24 июня 2011

Мой код должен создать файл, записать в него, а затем перевести файл-объект в режим только для чтения.

То, что я делаю сейчас, выглядит довольно уродливо: я открываю файл в режиме "wb ", запишите его, закройте его, затем снова откройте его в режиме" rb ":

open(@cached_file_name, 'wb') { |file| file.write("foo") }    
@cached_file = open(@cached_file_name, 'rb')

Можно ли изменить файл с" wb "на" rb ", не открывая и не закрывая его?Как:

@cached_file = open(@cached_file_name, 'wb')
@cached_file.write("foo")
@cached_file.mode= 'r'

Я не знаю о таком mode= методе, хотя.

1 Ответ

0 голосов
/ 24 июня 2011

Нет, я не знаю, как это сделать, и я думаю, что это происходит из системного вызова open в Linux, который не может этого сделать.

RubyDoc для IO.new состояния:

Когда режим исходного ввода-вывода доступен только для чтения, режим нельзя изменить для записи.Аналогично, режим нельзя изменить с записи только на читаемую.Если такое неправильное изменение направлено, время, когда ошибка действительно возникает, зависит от платформы.

Но я отмечаю, что это не объясняет, что вы можете или не можете сделать для чтения/ режимы записи ...

...