Развертывание бинарных драгоценных камней на другой платформе

#ruby-on-rails #ruby #deployment #gem

Вопрос:

У меня есть приложение Rails, которое мне нужно развернуть. Вот факты:

  • Приложение было разработано на Windows, и для него требуются двоичные камни Windows
  • Приложение должно быть развернуто на открытом общем сервере Solaris (Joyent)
  • У меня нет разрешений на установку самоцветов на сервере
  • Для недвоичных драгоценных камней я могу просто выполнить rake gems:unpack локальную загрузку, а затем загрузить; это работает просто отлично.

Итак, мой вопрос в том, как мне получить нужные мне бинарные драгоценные камни на мой рабочий сервер?

Ответ №1:

  • Приложение было разработано на Windows, и для него требуются двоичные камни Windows
  • Приложение должно быть развернуто на открытом общем сервере Solaris (Joyent)

Вы понимаете, что вы не можете запускать двоичные файлы Windows на открытом solaris. Windows на самом деле полностью отличается от solaris…

Если драгоценные камни принадлежат третьей стороне, вы можете загрузить предварительно упакованные двоичные версии для solaris, созданные кем-то другим. Затем вы можете поместить их в каталог поставщиков и загрузить их оттуда, а не устанавливать gem.

Если вы не можете получить предварительно упакованные двоичные файлы для solaris, вам понадобится ваша собственная машина solaris (с помощью Virtual PC, VMware, VirtualBox и т. Д.), Используйте ее для компиляции gems, а затем извлеките двоичные файлы.

Если у вас на самом деле есть только исходный код, который работает в Windows (например, вы создали его самостоятельно или человек, предоставляющий драгоценный камень, разработал его только для работы в Windows), вы облажались. Вам нужно будет найти кроссплатформенную замену.

Было бы полезно, если бы вы могли рассказать нам, о каких драгоценных камнях вы говорите, чтобы люди могли помочь найти более конкретное решение и точно объяснить, что происходит.

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

1. Joyent, похоже, предоставляет вам корневой доступ, поэтому вы можете установить любой драгоценный камень, который хотите, при условии, что он может быть скомпилирован в Solaris wiki. joyent.com/all-accelerators:kb:rubygems

2. хорошая мысль, я забыл об этом. Joyent (и то, что позволяет им это делать в зонах соляриса) — это потрясающе

Ответ №2:

Попросите администратора общего сервера установить драгоценные камни для вас. Если это «стандартные» драгоценные камни, доступные в авторитетном домене, это действительно не должно быть таким уж большим делом, мой поставщик общих серверов делает это все время.

Ответ №3:

Бинарные драгоценные камни-вот настоящая проблема. Для всех остальных драгоценных камней вы можете использовать vendor/gems каталог (возможно только с Rails 2.1 ).

Ответ №4:

Продавай все подряд.

Это делает две вещи. Это делает ваше приложение развертываемым без зависимости от установленных в системе драгоценных камней, а во-вторых, замораживает определенную версию драгоценного камня в вашем приложении. Поэтому, если кто-то другой проверит это с помощью вашего инструмента SCM, у него не будет несоответствия версий, и он будет работать без проблем.

Удачи!

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

1. Можно ли «продавать» бинарные драгоценные камни (драгоценные камни на основе кода C)?

2. Поставщик Все является предком драгоценных камней рейка:распакуйте ryandaigle.com/articles/2008/4/1/…

Ответ №5:

Вероятно, вам придется использовать кросс-компилятор для таргетинга на Solaris, работающий в Windows.

Создание кросс-компиляторов, как правило, является сложным и подверженным ошибкам процессом. Я делал это раньше, и сложность не для слабонервных. В идеале вы найдете кого-нибудь, имеющего доступ к машине сборки Solaris, и попросите его создать двоичный файл для вас.

Если вам придется пойти по пути кросс-компилятора, я подозреваю, что решением будет установка cygwin и использование его инструментов сборки для создания кросс-компилятора solaris, размещенного на cygwin. Я бы предложил взглянуть на проект crosstool, который предоставит вам сценарии, которые обрабатывают некоторые детали для вас.

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

1. Не проще ли было бы просто установить Open Solaris на виртуальную машину VirtualBox и скомпилировать ее там?

2. Да, я полагаю, что так и было бы. Однако на плакате не упоминался Открытый Солярис, поэтому я предположил, что это что-то более старое.