#sqlite #heroku #ruby-on-rails-3.1 #bundler
#sqlite #heroku #ruby-on-rails-3.1 #bundler
Вопрос:
Я пытаюсь впервые развернуть приложение Rails 3.1 на Heroku. Я установил его в стек Cedar, удалил драгоценный камень sqlite3, но когда я отправляю код в Heroku, я получаю эту ошибку:
——> Установка зависимостей с использованием пакета Bundler версии 1.1.Запуск rc: установка пакета — без разработки: тест — поставщик пути / пакет — развертывание, извлекающий метаданные gem из http://rubygems.org/……. (…)
Установка rails (3.1.0) Установка sqlite3 (1.3.4) с собственными расширениями К сожалению, произошла фатальная ошибка. Пожалуйста, сообщите об этой ошибке в службу отслеживания проблем с пакетом по адресу https://github.com/carlhuda/bundler/issues чтобы мы могли это исправить. Спасибо! /usr/local/lib/ruby/1.9.1/rubygems/installer.rb:483:в `rescue в блоке в build_extensions’: ОШИБКА: не удалось создать собственное расширение gem. (Gem::Installer::ExtensionBuildError) /usr/local/bin/ruby extconf.rb проверяет наличие sqlite3.h … нет
Я понятия не имею, почему bundle install пытается установить sqlite3. Взгляните на мой Gemfile и Gemfile.lock:
Gemfile
source 'http://rubygems.org'
gem 'rails', '3.1.0'
gem 'json'
gem 'pg'
gem 'thin'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
# gem 'sass-rails', " ~> 3.1.0"
# gem 'coffee-rails', "~> 3.1.0"
gem 'uglifier'
end
gem 'jquery-rails'
Gemfile.lock
GEM remote: http://rubygems.org/ specs:
actionmailer (3.1.0)
actionpack (= 3.1.0)
mail (~> 2.3.0)
actionpack (3.1.0)
activemodel (= 3.1.0)
activesupport (= 3.1.0)
builder (~> 3.0.0)
erubis (~> 2.7.0)
i18n (~> 0.6)
rack (~> 1.3.2)
rack-cache (~> 1.0.3)
rack-mount (~> 0.8.2)
rack-test (~> 0.6.1)
sprockets (~> 2.0.0)
activemodel (3.1.0)
activesupport (= 3.1.0)
bcrypt-ruby (~> 3.0.0)
builder (~> 3.0.0)
i18n (~> 0.6)
activerecord (3.1.0)
activemodel (= 3.1.0)
activesupport (= 3.1.0)
arel (~> 2.2.1)
tzinfo (~> 0.3.29)
activeresource (3.1.0)
activemodel (= 3.1.0)
activesupport (= 3.1.0)
activesupport (3.1.0)
multi_json (~> 1.0)
arel (2.2.1)
bcrypt-ruby (3.0.1)
builder (3.0.0)
daemons (1.1.4)
erubis (2.7.0)
eventmachine (0.12.10)
execjs (1.2.9)
multi_json (~> 1.0)
hike (1.2.1)
i18n (0.6.0)
jquery-rails (1.0.14)
railties (~> 3.0)
thor (~> 0.14)
json (1.6.1)
mail (2.3.0)
i18n (>= 0.4.0)
mime-types (~> 1.16)
treetop (~> 1.4.8)
mime-types (1.16)
multi_json (1.0.3)
pg (0.11.0)
polyglot (0.3.2)
rack (1.3.3)
rack-cache (1.0.3)
rack (>= 0.4)
rack-mount (0.8.3)
rack (>= 1.0.0)
rack-ssl (1.3.2)
rack
rack-test (0.6.1)
rack (>= 1.0)
rails (3.1.0)
actionmailer (= 3.1.0)
actionpack (= 3.1.0)
activerecord (= 3.1.0)
activeresource (= 3.1.0)
activesupport (= 3.1.0)
bundler (~> 1.0)
railties (= 3.1.0)
railties (3.1.0)
actionpack (= 3.1.0)
activesupport (= 3.1.0)
rack-ssl (~> 1.3.2)
rake (>= 0.8.7)
rdoc (~> 3.4)
thor (~> 0.14.6)
rake (0.9.2)
rdoc (3.9.4)
sprockets (2.0.0)
hike (~> 1.2)
rack (~> 1.0)
tilt (~> 1.1, != 1.3.0)
thin (1.2.11)
daemons (>= 1.0.9)
eventmachine (>= 0.12.6)
rack (>= 1.0.0)
thor (0.14.6)
tilt (1.3.3)
treetop (1.4.10)
polyglot
polyglot (>= 0.3.1)
tzinfo (0.3.29)
uglifier (1.0.3)
execjs (>= 0.3.0)
multi_json (>= 1.0.2)
PLATFORMS ruby
DEPENDENCIES jquery-rails json pg rails (= 3.1.0) thin uglifier
Как я могу это исправить?
Комментарии:
1. Итак, умный парень, который проголосовал против, может объяснить, почему?
2. У меня точно такая же проблема, я использую ‘pg’ локально без проблем, но Heroku все еще пытается установить sqlite и, следовательно, выдает ошибку. Однако я вижу, что в моем gemfile.lock у меня есть следующее:
sqlite3 (1.3.4) sqlite3-ruby (1.3.3) sqlite3 (>= 1.3.3)
. Очевидно, что именно это вызывает проблему, но я не могу понять, почему они все еще проникают в мой gemfile. блокировка; независимо от того, сколько раз я делаюbundle update
или удаляю файл блокировки и начинаю с нуля. Есть предложения?3. Я исправил свой, удалив
taps
драгоценный камень из моего Gemfile. Забыл, что он мне не нужен в самом Gemfile, только в моем gemset, чтобы использовать его. Удалениеtaps
удалило зависимости sqlite в моем Gemfile.lock.4. Спасибо, Пит, удаление отводов (в моем случае отводов-отводов) сработало для меня 🙂
Ответ №1:
Когда я столкнулся с проблемой, оказалось, что я забыл зафиксировать свои изменения после bundle install
. Дох! git status
должно указывать на неустановленные изменения для файлов gem.
Ответ №2:
У меня такая же проблема, и решение zoltarSpeaks устранило ее для меня. После прочтения этой статьи у меня был установлен драгоценный камень taps, в котором указывалось, что это будет необходимо для перехода с локального sqlite3 на рабочий postgresql: http://batsov.com/articles/2011/10/30/deploying-rails31-apps-on-celadon-cedar /. Оказалось, что мне не нужен драгоценный камень taps, в конце концов, но это была явная проблема. Удалена ссылка, обновление пакета, все системы работают.
Ответ №3:
попробуйте удалить Gemfile.заблокируйте и запустите установку пакета, зафиксируйте и нажмите
Комментарии:
1. используете ли вы Windows для разработки?
Ответ №4:
Простое решение без удаления драгоценного камня sqlite3 для Heroku:
Добавить в Gemfile:
group :production do
gem 'pg', '0.17.1' #or version of pg you want
gem 'rails_12factor', '0.0.2' #Heroku static assets for image and css
Проверьте, что у вас есть:
end
end
в конце кода в Gemfile
затем сохраните Gemfile и запустите bundle install
$ bundle install --without production
чем зафиксировать
$ git commit -a -m "Update Gemfile.lock for Heroku"
чем
$ git push heroku master
Вот и все. Вы получите только несколько предупреждений, которые просто нужно исправить.