如何在Heroku上使用rdiscount?
我正在尝试将一个小测试应用程序推送到Heroku。 这是App和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
。 但是在尝试安装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或库,并且这种依赖性似乎无法解决。 但是,我不明白如何解决这个问题。 你能就如何让它发挥作用给我一些建议吗?
在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上成功了
- 为什么’rspec spec’比’bundle exec spec’运行得更快,使用的资源更少
- 试图用Rails 3将gem商品化为捆绑包,但是Gem没有Gemspec
- Rails 4 railties的可执行“rails”与rails冲突
- 为什么当gemspec声明一个开放约束时,bundler会坚持一个确切的gem版本号?
- “Ruby on Rails命令提示符”来自哪里,为什么它一直在创建“站点”文件夹?
- gem install debugger -v’1.5.0’失败
- 捆绑exec与heroku – 是否有必要?
- 如何添加Mac特定的gem在Mac上捆绑但不在Linux上捆绑?
- bundler安装获取“i18n需要Ruby版本> = 1.9.3”