Rails 3: Bundle Exec - PullRequest
       11

Rails 3: Bundle Exec

1 голос
/ 19 июля 2011

При попытке начать с Mongrel я получаю следующее:

Вы уже активировали демонов 1.1.0, но ваш Gemfile требует демоны 1.0.10. Рассмотрите возможность использования комплекта Exec. (Gem :: LoadError)

Спасибо!

Edit:

Мой Gemfile:

source 'http://rubygems.org'

gem 'rake', '0.8.7'
gem 'rails', '3.0.0'
gem 'mysql2', '0.2.7'
gem 'tabs_on_rails'
gem 'tabulous'
gem 'devise'
gem 'cancan'
gem 'kaminari'
gem 'formtastic', '~> 1.2.0'
gem 'jquery-rails'
gem 'client_side_validations'
gem 'paperclip'
gem 'paper_trail'
gem 'acts-as-taggable-on'
gem 'acts_as_tree'
gem 'acts_as_list'
gem 'hpricot'
gem 'rails3-jquery-autocomplete'
gem 'meta_where'
gem 'meta_search'
gem 'aws-s3'
gem 'flash_cookie_session'
gem 'mime-types', :require => 'mime/types'
gem 'vanities'
gem 'geokit'
gem 'geokit-rails'
gem 'tiny_mce'
gem 'RedCloth'
gem 'omniauth'
gem 'twitter'
gem 'fb_graph'
gem 'linkedin'
gem 'whenever'
gem 'resque'

group :development, :test do
  gem 'faker'
  gem 'mocha'
  gem 'rails-erd'
  gem 'rspec'
  gem 'rspec-rails'
  gem 'webrat'
  gem 'pickle'
end

Ответы [ 2 ]

2 голосов
/ 19 июля 2011

bundle exec - это команда, используемая для того, чтобы Bundler мог выполнять свою работу и управлять драгоценными камнями для разных приложений (которые могут использовать разные версии одних и тех же драгоценных камней).Если вы запустите bundle, а затем попытаетесь запустить ruby foo.rb в оболочке, ваш Gemfile будет проигнорирован, и будет использоваться самая последняя версия каждого драгоценного камня require d.

Heroku уже использует bundle exec при запуске приложения.Это встроено в платформу, и это единственный способ, позволяющий им по-настоящему справляться со слизнями.

Я думаю, что ваша проблема проистекает из несовместимости между двумя разными камнями, которые вы используете.Если один драгоценный камень имеет зависимость от foo ~> 0.2.3, а другой драгоценный камень имеет зависимость от foo >= 0.3, вы не сможете запустить их оба - у вас не может быть двух версий одинаковых драгоценных камней, доступных в одном процессе,Вы можете убедиться в этом, запустив bundle в разработке и дважды проверив Gemfile.lock.Также убедитесь, что ваш Gemfile.lock проверяется в вашем хранилище;если вы отправите в Heroku только свой Gemfile, который работает на вашем компьютере, и они установят его на его основе, они могут получить более новые версии библиотек с различными зависимостями (я не уверен, что Heroku будет жаловаться, если вы неGemfile.lock).

0 голосов
/ 19 июля 2011

Любые гемы, которые вы используете для другого сервера в разработке, вы должны поместить в пространство имен разработки или вынуть их.

Например.Я хочу только этот драгоценный камень для развития.Сделайте это для тех драгоценных камней:

group :development do
    gem 'capistrano', '2.6.0', :require => nil
end
...