我如何在Heroku上使用rdiscount?[英] How can I use rdiscount on Heroku?

本文是小编为大家收集整理的关于我如何在Heroku上使用rdiscount?的处理方法,想解了我如何在Heroku上使用rdiscount?的问题怎么解决?我如何在Heroku上使用rdiscount?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我试图将一个小型测试应用程序推到Heroku.以下是应用程序和GEM文件:

app:

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.但是在尝试安装Rdiscount Gem:

时,推送到Heroku失败
-----> 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可能取决于其他一些宝石或图书馆,这个依赖性似乎没有得到解决.但是,我不明白如何解决这个问题.你能给我一些关于如何获得工作的建议吗?

推荐答案

似乎是heroku上的Ruby 1.9.2的问题,以及它如何认为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

上成功

本文地址:https://www.itbaoku.cn/post/786590.html