【问题标题】:How can I use rdiscount on Heroku?如何在 Heroku 上使用 rdiscount?
【发布时间】:2013-01-20 00:35:39
【问题描述】:

我正在尝试将一个小型测试应用程序推送到 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

宝石文件:

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 可能依赖于其他一些 Gems 或库,并且这种依赖关系似乎没有得到解决。但是,我不明白如何解决这个问题。你能给我一些关于如何让它工作的建议吗?

【问题讨论】:

    标签: ruby heroku gem bundler rdiscount


    【解决方案1】:

    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 上成功

    【讨论】:

    • 谢谢你,它也为我解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    相关资源
    最近更新 更多