Erreur Installation de Redcloth sur Rails 3.0.3 et RVM sur Ubuntu 10.10
-
12-11-2019 - |
Question
J'essaye d'ajouter RedCloth à mon fichier GEM, et lorsque j'exécute 'Bundle Installer', j'obtiens ce qui suit:
Installing RedCloth (4.2.6) with native extensions /home/user/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:529:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError) /home/user/.rvm/rubies/ruby-1.9.2-p136/bin/ruby extconf.rb Gem files will remain installed in /home/user/.rvm/gems/ruby-1.9.2-p136@vendorguide/gems/RedCloth-4.2.6 for inspection. Results logged to /home/user/.rvm/gems/ruby-1.9.2-p136@vendorguide/gems/RedCloth-4.2.6/ext/redcloth_scan/gem_make.out from /home/user/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:507:in `block in build_extensions' from /home/user/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:482:in `each' from /home/user/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:482:in `build_extensions' from /home/user/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:156:in `install' from /home/user/.rvm/gems/ruby-1.9.2-p136@vendorguide/gems/bundler-1.0.10/lib/bundler/source.rb:96:in `install' from /home/user/.rvm/gems/ruby-1.9.2-p136@vendorguide/gems/bundler-1.0.10/lib/bundler/installer.rb:55:in `block in run' from /home/user/.rvm/gems/ruby-1.9.2-p136@vendorguide/gems/bundler-1.0.10/lib/bundler/spec_set.rb:12:in `block in each' from /home/user/.rvm/gems/ruby-1.9.2-p136@vendorguide/gems/bundler-1.0.10/lib/bundler/spec_set.rb:12:in `each' from /home/user/.rvm/gems/ruby-1.9.2-p136@vendorguide/gems/bundler-1.0.10/lib/bundler/spec_set.rb:12:in `each' from /home/user/.rvm/gems/ruby-1.9.2-p136@vendorguide/gems/bundler-1.0.10/lib/bundler/installer.rb:44:in `run' from /home/user/.rvm/gems/ruby-1.9.2-p136@vendorguide/gems/bundler-1.0.10/lib/bundler/installer.rb:8:in `install' from /home/user/.rvm/gems/ruby-1.9.2-p136@vendorguide/gems/bundler-1.0.10/lib/bundler/cli.rb:226:in `install' from /home/user/.rvm/gems/ruby-1.9.2-p136@vendorguide/gems/bundler-1.0.10/lib/bundler/vendor/thor/task.rb:22:in `run' from /home/user/.rvm/gems/ruby-1.9.2-p136@vendorguide/gems/bundler-1.0.10/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task' from /home/user/.rvm/gems/ruby-1.9.2-p136@vendorguide/gems/bundler-1.0.10/lib/bundler/vendor/thor.rb:246:in `dispatch' from /home/user/.rvm/gems/ruby-1.9.2-p136@vendorguide/gems/bundler-1.0.10/lib/bundler/vendor/thor/base.rb:389:in `start' from /home/user/.rvm/gems/ruby-1.9.2-p136@vendorguide/gems/bundler-1.0.10/bin/bundle:13:in `' from /home/user/.rvm/gems/ruby-1.9.2-p136@vendorguide/bin/bundle:19:in `load' from /home/user/.rvm/gems/ruby-1.9.2-p136@vendorguide/bin/bundle:19:in `'
Si j'exécute "Gem Install Redcloth", puis exécute "Bundle Installer", cela fonctionne, mais lorsque j'essaie réellement d'utiliser Redcloth dans un modèle 'fournisseur.rb' je reçois:
Uninitialized constant Vendor::RedCloth
Voici mon gemfile:
gem 'rails', '3.0.3' gem "compass", ">= 0.10.6" gem "haml" gem 'formtastic' gem 'devise', :git => 'git://github.com/plataformatec/devise.git', :branch => 'master' gem 'oa-oauth', :require => "omniauth/oauth" gem 'mogli' gem 'dalli' gem 'exceptional' gem 'json' gem 'RedCloth' group :test, :development do gem "ruby-debug19" gem "rspec-rails", "~> 2.4" gem 'sqlite3-ruby', :require => 'sqlite3' gem 'hpricot' gem 'ruby_parser' gem 'heroku' gem "flutie" end group :test do gem 'cucumber-rails' gem 'capybara' gem 'database_cleaner' gem 'mocha' gem 'factory_girl_rails' gem 'shoulda' gem 'ZenTest' gem 'fakeweb' end
Et voici mon modèle:
class Vendor ActiveRecord::Base has_many :reviews belongs_to :user validates_presence_of :name validates_presence_of :description before_save :convert_text def convert_text self.description = RedCloth.new(self.description).to_html unless self.description.nil? self.services_description = RedCloth.new(self.services_description).to_html unless self.services_description.nil? self.clients_description = RedCloth.new(self.clients_description).to_html unless self.clients_description.nil? self.pricing_description = RedCloth.new(self.pricing_description).to_html unless self.pricing_description.nil? self.press = RedCloth.new(self.press).to_html unless self.press.nil? end end
Merci d'avance.
La solution
Cela pourrait être lié au problème que j'ai eu ce matin avec Redcloth.
J'ai également installé la version 4.2.6 de Redcloth, puis je n'ai pas pu l'utiliser dans une application Sinatra, peu importe ce que j'ai fait. (J'ai eu beaucoup d'erreurs similaires, Uninitialized constant RedCloth
.) Cependant, le site Redcloth (http://redcloth.org/) indique que la dernière version stable est seulement 4.2.2.
J'ai désinstallé 4.2.6 et installé 4.2.2, et cela a parfaitement fonctionné.
Essayez d'ajouter la restriction à votre gemfile, c'est-à-dire gem 'RedCloth', '4.2.2'