2014-11-03 2 views
4

Я новый разработчик Rails. Недавно я взял класс на Rails, и теперь я пытаюсь убедиться, что я рос в своем мастерстве, присваивая себе проекты, которые подталкивают меня. Одна вещь, которую я пытаюсь сделать сейчас, - использовать Radiant CMS для создания сайта блога. Тем не менее, у меня возникают проблемы с загрузкой Radiant gem. Вот что я сделал:Есть ли менеджер версий для драгоценных камней Ruby?

  1. Когда я впервые попробовал gem install radiant, он установил большинство необходимых драгоценных камней, но затем бросил предупреждение (я к сожалению не спасти дословное), который по линиям:

    railties executable will overwrite rails executable. Overwrite? Y/n 
    
  2. Глупо, я выбрал «Y». Как только я это сделал, я протестировал свой рельсовый камень, написав rails new testproject, и он потерпел неудачу. Поэтому я снова запустил gem install rails, сказал, чтобы он перезаписал исполняемый файл «railties», затем побежал gem uninstall radiant, чтобы избавиться от основного лучистого драгоценного камня (хотя у меня все еще есть ребра).

  3. Теперь мой драгоценный камень Rails исправлен, и я могу создать новые проекты Rails без проблем. Тем не менее, я переустановил Radiant gem, и, хотя он был установлен, он не может создавать проект каждый раз, когда я его запускаю.

Я уверен, что что-то сломал, но меня это не очень беспокоит. Меня волнует тот факт, что кажется, что жемчужина Radiant не очень хорошо сосуществует с камнем Rails, что приводит меня к моему вопросу:

Есть ли способ создать отдельный автономный рубин gem, где текущая версия Ruby будет использовать только драгоценные камни в указанной среде?

По сути, я ищу то, что делает rbenv, а для коллекций драгоценных камней, а не рубиновых версий.

В настоящее время у меня установлен Homebrew, и я использую rbenv в качестве моего менеджера версий. Все, что я могу найти до сих пор, говорит об управлении драгоценными камнями на основе проекта за проектами; Я ищу что-то, что будет управлять и держать отдельные драгоценные камни, которые создают проекты в первую очередь. Так, например, environment_a содержит rails и httparty, а environment_b содержит radiant и railties.

Я не выше полностью уничтожающего rbenv и всех моих драгоценных камней и начиная с нуля, так что это возможность (и преимущество быть noob).

+0

Ответы верны, но лучше всего прочитать о использовании RVM и поддержке [gemsets] (http://rvm.io/gemsets), а также о том, что предлагает Bundler, а затем решить, что лучше всего подходит для вас.Вы можете использовать комбинации двух, например RVM, для простых стандартных гемземов для большинства ваших проектов, особенно простых, и Bundler для более сложных или общих. Одно предупреждение, однако, не пытайтесь смешивать RVM и rbenv, поскольку они оба предназначены для управления версиями Ruby, и они будут конфликтовать, заставляя вас гайки, чтобы выбрать один или другой. –

+0

Привет всем - большое спасибо за ваши ответы! Я загрузил rbenv-gemset и углубился в Bundler, и я нашел именно то, что искал. Я также нашел [это] (https://gist.github.com/MicahElliott/2407918), что помогло мне понять немного больше того, что мне нужно было сделать с Bundler. Я избегал RVM, только потому, что я использую rbenv и потому, что хочу понять, что я делаю немного лучше, прежде чем использовать что-то более сложное, чем rbenv. Еще раз спасибо за вашу помощь! – JohnTheSixth

ответ

2

Да: rbenv-gemset

Я думаю, что это лучше, чем РВМ, поскольку она менее агрессивна.

Я использую rbenv и rbenv-gemset около 2 лет и считаю его прост в использовании. Это упрощает инкапсуляцию Ruby и gemset в проект, запуск нескольких Rubies и gemset на одной машине и перенос проекта на другой компьютер.

Вы можете использовать ruby-build для установки других версий Ruby. Существует трюк для установки последних версий Ruby.

Возможно, вы захотите взглянуть на How do I ensure ruby gems are installed in right place to be executed by bundler? Имеет некоторые релевантные (и, надеюсь, полезную) информацию.

1

Да, есть.

Я думаю, что это называется RVM.

Как Крис Heald сказал, Вы можете проверить более подробную информацию об этом @rvm.io/gemsets/basics

+1

Чтобы изложить это, см. Http://rvm.io/gemsets/basics –

+1

OP уже использует rbenv для управления своими версиями Ruby. RVM и rbenv будут конфликтовать, так что это нужно упомянуть. Автор rbenv специально говорит в [документации] (https://github.com/sstephenson/rbenv): «Замечание о совместимости: rbenv несовместим с RVM. Обязательно полностью удалите RVM и удалите любые ссылки на него с вашего файлы инициализации оболочки перед установкой rbenv ». –

5

Вы должны проверить bundler, как это делает именно то, что вам нужно.

+1

И любая недавняя версия Rails использует ее по умолчанию –

1

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

0

Вы спросили: «Есть ли способ создать отдельные автономные среды Ruby Gem, где текущая версия Ruby будет использовать только драгоценные камни в указанной среде?»

Лучший способ сделать это с РВМ вступающего каталог вашего проекта, а затем запустить:

rvm use [email protected]_project_name --ruby-version --create 

где хуг ваша версия рубин для этого проекта, ранее установленные с РВМ установить хуг

Например, чтобы использовать последнюю версию Ruby, с проектом под названием акме вы бы использовать

rvm install 2.3.1 

, а затем

rvm use [email protected] --ruby-version --create 

Эта команда создаст два файла в directoty проектов: .ruby-версия и .ruby-gemset.

Файл .ruby-version будет содержать только номер версии. И файл .ruby-gemset будет содержать только имя от gemset, одно и то же имя вашего проекта (acme).

Случается, что РВМ достаточно умен, чтобы проверить эти файлы и использовать gemset указанных, который будет расположен на ~/.rvm/gems/[email protected] и ваши драгоценные камни будут расположенного по адресу ~/.rvm/gems/[email protected]/gems.

Некоторые пункты:

1) Используя имя вашего проекта в качестве имени gemset не является обязательным. Вы можете использовать все, что захотите. Это своего рода стандарт, использующий имя проекта, но не обязательный.

2) У rbenv, вероятно, есть способ сделать то же самое, но я не использую rbenv и действительно не знаю, как это сделать.

Надеюсь, что этот ответ поможет.

Смежные вопросы