Как я могу использовать rdiscount на Heroku?

Я пытаюсь отправить небольшое тестовое приложение в Heroku. Вот приложение и файл Gem:

Приложение:

require 'sinatra'
require 'haml'
require 'rdiscount'

set :markdown, :layout_engine => :haml, :layout => :layout


get '/' do 
  haml :index
end

get '/blog' do 
  markdown :test
end

Gemfile:

source :rubygems
gem 'sinatra'
gem 'thin'
gem 'haml'
gem 'rdiscount'

Прежде чем подтолкнуть к Heroku я бегу bundle install, Но нажатие на Heroku завершается неудачно при попытке установить гем rdiscount:

-----> Ruby/Rack app detected
-----> Installing dependencies using Bundler version 1.3.0.pre.5
   Running: bundle install --without development:test --path vendor/bundle --binstubs   vendor/bundle/bin --deployment
   Fetching gem metadata from http://rubygems.org/..........
   Fetching gem metadata from http://rubygems.org/..
   Using daemons (1.1.9)
   Using eventmachine (1.0.0)
   Using haml (3.1.7)
   Using rack (1.4.3)
   Using rack-protection (1.3.2)
   installing rdiscount (2.0.7)
   Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
   /usr/local/bin/ruby extconf.rb
   checking for random()... yes
   checking for srandom()... yes
   checking for rand()... yes
   checking for srand()... yes
   checking size of unsigned long... long
   checking size of unsigned int... int
   no int with size 4
   *** extconf.rb failed ***
   Could not create Makefile due to some reason, probably lack of
   necessary libraries and/or headers.  Check the mkmf.log file for more
   details.  You may need configuration options.
   Provided configuration options:
   --with-opt-dir
   --without-opt-dir
   --with-opt-include
   --without-opt-include=${opt-dir}/include
   --with-opt-lib
   --without-opt-lib=${opt-dir}/lib
   --with-make-prog
   --without-make-prog
   --srcdir=.
   --curdir
   --ruby=/usr/local/bin/ruby
   --with-rdiscount-dir
   --without-rdiscount-dir
   --with-rdiscount-include
   --without-rdiscount-include=${rdiscount-dir}/include
   --with-rdiscount-lib
   --without-rdiscount-lib=${rdiscount-dir}/lib
   Gem files will remain installed in /tmp/build_3aijv3ga0dy1y/vendor/bundle/ruby/1.9.1/gems/rdiscount-2.0.7 for inspection.
   Results logged to /tmp/build_3aijv3ga0dy1y/vendor/bundle/ruby/1.9.1/gems/rdiscount-2.0.7/ext/gem_make.out
   An error occurred while installing rdiscount (2.0.7), and Bundler cannot continue.
   Make sure that `gem install rdiscount -v '2.0.7'` succeeds before bundling.
 !
 !     Failed to install gems via Bundler.
 !
 !     Heroku push rejected, failed to compile Ruby/rack app

Я понимаю, что rdiscount может зависеть от некоторых других Gems или библиотек, и эта зависимость, похоже, не разрешена. Однако я не понимаю, как решить эту проблему. Не могли бы вы дать мне несколько советов о том, как заставить это работать?

1 ответ

Решение

Кажется, есть проблема с Ruby 1.9.2 на Heroku и как байты он думает, что int.

Попробуй добавить ruby "1.9.3" вам Gemfile вот так:

source :rubygems
ruby "1.9.3"

gem 'sinatra'
gem 'thin'
gem 'haml'
gem 'rdiscount'

Мое собственное тестирование воспроизвело вашу ошибку на 1.9.2 и завершилось успешно на 1.9.3

Другие вопросы по тегам