Не удается запустить ‘rake db: migrate’ в клонированном репозитории github

#ruby-on-rails #github #rake #clone #dbmigrate

#ruby-on-rails #github #rake #клонировать #dbmigrate

Вопрос:

Поскольку я новичок в rails и изучил самые основы из книг, теперь я решил, что могу узнать гораздо больше, читая код других пользователей и пытаясь разобраться в нем, поэтому я зарегистрировался на github и все там настроил. Теперь я прочитал, что один хороший проект с открытым исходным кодом, у которого можно поучиться, radiant, поэтому я перешел к https://github.com/radiant/radiant и клонировал его в локальный каталог. Затем я поступил следующим образом:

  1. cd radiant
  2. bundle install , который прошел нормально
  3. rake db:migrate , который первым вернул:

рейк прерван! Вы уже активировали rake 0.9.2, но для вашего Gemfile требуется rake 0.8.7. Использование bundle exec может привести к

Итак, я ввел bundle exec rake db:migrate и получил следующее:

ПРИМЕЧАНИЕ: Gem.source_index устарел, используйте спецификацию. Он будет удален в или после 2011-11-01. Gem.source_index, вызванный из c:/Ruby192/lib/ruby/gems/1.9.1/gems/rails-2.3.14/lib/rails/gem_dependency Рейк прерван! Нет такого файла для загрузки — radius

Итак, мне интересно, как решить эту проблему? Я также заметил, что Gemfile и Gemfile.блокировка уже существовала в папке radiant, когда она была клонирована, что, возможно, могло быть частью проблемы?

Также мне интересно, является ли crutial, что я запускаю ту же версию rails, на которой написан проект?

Теперь следует сказать, что в настоящее время у меня установлен rails 3.0.5 и запущен в Windows

Я надеюсь, что кто-нибудь сможет мне здесь помочь, это было довольно неприятно, поскольку я не смог запустить ни одного клонированного репозитория github (radiant здесь всего лишь один пример).

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

1. отредактируйте свой Gemfile. попробуйте ‘bundle update’ после запуска ‘bundle install’.

Ответ №1:

Вам следует отредактировать свой Gemfile и сделать так, чтобы для него требовался более новый rake. Также вы можете выполнить rake db:migrate --trace , чтобы получить дополнительную информацию об ошибке.

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

1. @Jason Blade более новый rake 0.9.2 , если вы не знали

Ответ №2:

Предупреждение об устаревании по-прежнему является всего лишь предупреждением, и оно не должно вызывать у вас никаких проблем. Часть этой ошибки, которая имеет отношение к No such file to load -- radius . Вероятно, вам нужно следовать инструкциям по установке Radiant, которые включают в себя запуск gem install radiant , прежде чем куда-либо удалять код этого проекта.

Bundler управляет установкой и использованием драгоценных камней в вашем Gemfile, и если Gemfile.присутствует блокировка, она будет использовать именно эти версии. Это означает, что вы не можете запустить Radiant с Rails 3.0.5, поскольку в Gemfile указано 2.3.14. Однако Bundler автоматически установит Rails 2.3.14 и его зависимости, так что вам не нужно беспокоиться об этом.

Кстати, этот проект выглядит так, как будто им очень плохо управляли. Проект Rails / gem не часто заставляет вас фактически клонировать его, чтобы использовать. Если вы хотите проверить проект Rails 3, у которого можно поучиться, у меня есть тонкое приложение Rails 3, которое должно было стать общедоступным API на Github с действительно чистым кодом:http://github.com/coreyward/instavibe

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

1. спасибо, что нашли время прояснить это для меня! Я обязательно проверю ваше приложение. Когда вы говорите, что «проект Rails / gem не часто заставляет вас фактически клонировать его, чтобы использовать», каков на самом деле распространенный способ? Я имею в виду, не нужно ли мне разветвлять / клонировать ваше приложение, чтобы использовать его? (Я чувствую, что это может быть несколько глупый вопрос, но я надеюсь, что вы поймете мою искренность, чтобы учиться)

2. Нет, сторонний код становится общедоступным (для использования, а не для разработки) в Ruby через Gems. Это не абсолютный, но для большинства вещей Gem имеет смысл. Затем вы можете установить их через gem install [name] , а затем включить их, запустив require 'rubygems'; require 'name' в вашем Ruby. Rails даже сам по себе является жемчужиной. 😉