ruby - installing - rails and heroku
¿Cómo puedo usar rdiscount en Heroku? (1)
Estoy tratando de enviar una pequeña aplicación de prueba a Heroku. Aquí está la aplicación y el archivo Gem:
Aplicación:
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''
Antes de presionar a Heroku, ejecuto bundle install
. Pero presionar a Heroku falla al intentar instalar la gema 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
Entiendo que rdiscount podría depender de otras gemas o bibliotecas y esta dependencia no parece resolverse. Sin embargo, no entiendo cómo resolver este problema. ¿Podría darme algunos consejos sobre cómo hacer que esto funcione?
Parece que hay un problema con Ruby 1.9.2 en Heroku y cómo pueden los bytes que piensa que int es.
Intenta agregar ruby "1.9.3"
a tu Gemfile de la siguiente manera:
source :rubygems
ruby "1.9.3"
gem ''sinatra''
gem ''thin''
gem ''haml''
gem ''rdiscount''
Mis propias pruebas reprodujeron tu error en 1.9.2 y tuvieron éxito en 1.9.3