?

Log in

Mon, Sep. 12th, 2011, 11:51 am
axyd80: Виртуальная файловая система (Local, S3, SFTP)

Виртуальная файловая система позволяет использовать простой и одинаковый API
для работы с различными провайдерами - локальной файловой системой, AWS S3, SFTP.

UPD: В ЖЖ что-то странное с форматированием, тут эта-же статья с нормальной версткой и подсветкой синтаксиса.

I/O:

  home['projects/app'].files                       # => ['Rakefile', 'readme']
  readme = home['projects/app/readme']
  readme.copy_to other_project['readme']
  readme.move_to home['Desktop']
  readme.write 'My Cool App'
  readme.update{|text| text.gsub /App/, 'App v2'}
  readme.read                                      # => "My Cool App v2"
  app['**/*.rb']                                   # => [list of *.rb files]
  app['**/*.rb'].collect(&:size).reduce(:+)        # => sources size

API одинаков для любого провайдера, скопируем ассеты приложения на S3:

  box = Box.new aws_credentials
  app['public'].copy_to box['/']

Тоже самое для SFTP, деплоймент приложения:

  server = Box.new 'app.com'
  app.copy_to server['/apps/app']
  server['/apps/app'].bash 'server start'

Примеры и документация: http://alexeypetrushin.github.com/vfs

Mon, Sep. 12th, 2011 08:32 am (UTC)
labria

Вы же не деплоите так приложение, правда? =)

Mon, Sep. 12th, 2011 03:12 pm (UTC)
axyd80

Деплою вот конфигурация сервисов сервера https://github.com/alexeypetrushin/my_cluster/tree/master/lib/services

А что вас смущает в таком подходе?

Mon, Sep. 12th, 2011 04:09 pm (UTC)
labria

Только то что это php-way в его худшем виде. Затолкали файлы на сервер, перезапустили, авось заработает.
Вы же понимаете что никаким роллбеком в таком подходе не пахнет?
Плюс полное непонимание того что реально бежит на каком сервере.

Mon, Sep. 12th, 2011 05:15 pm (UTC)
axyd80

1. Я выбрал пример деплоймента простой как яйцо для того чтобы не перегружать читателя ненужными деталями и продемонстрировать идею как Vfs можно применять для деплоймента.

2. Вы сравниваете метры с киллограммами, Vfs это низкоуровневая библиотека для абстракции файловых операций.
А деплоймент - это набор конфигураций и правил по развертыванию приложений на серверах, и они совершенно никак друг с другом не связаны.

Capistrano - это 3 совершенно отдельных компонента (которые слиты в 1) - файловые операции + удаленная коммандная строка + управление конфигами и правила по их применению.

Vfs - это один из этих компонентов - файловые операции.

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

Mon, Sep. 12th, 2011 05:19 pm (UTC)
axyd80

Еще про деплоймент - есть еще 2 гема

- Vos - гем для работы с удаленной командной строкой и управлением удаленной машиной
- ClusterManagement - гем для управления конфигурациями серверов и правила по их развертыванию

И вот эта комбинация - Vfs + Vos + ClusterManagement и занимается депойментом, и там как-раз есть и версионность и прочие штуковины.
Но я не хочу его сейчас рассматривать чтобы не отвлекаться от темы.

Mon, Sep. 12th, 2011 11:20 am (UTC)
victor_zagorski

Э-э-э, это юмор?

Mon, Sep. 12th, 2011 03:13 pm (UTC)
axyd80

В чем именно заключается юмор?

Mon, Sep. 12th, 2011 03:18 pm (UTC)
victor_zagorski

Вот в этом:
++Вы же не деплоите так приложение, правда? =)++

У вас с первым комментатором красночёрные аватарки. Я решил что писал один человек.

Mon, Sep. 12th, 2011 03:21 pm (UTC)
axyd80

А, понятно :)