50 votes

gemme therubyracer sous Windows

Je développe paisiblement sous Windows sans ajouter de gemmes depuis quelques semaines maintenant et aujourd'hui j'ai décidé de faire une mise à jour du bundle, mais je n'arrive pas à passer par cette gemme appelée therubyracer. J'ai le devkit installé et il fonctionne selon la procédure de vérification de la documentation.

Ma question est la suivante : existe-t-il un moyen d'installer cette gemme sous Windows ?

Et est-ce que cette gemme sera requise par rails 3.1 et c'est pourquoi maintenant que je fais une mise à jour de bundle, elle est "glissée" dans rails 3.0.8 comme un geste de démarrage précoce pour la future migration 3.1 ?

EDIT incluant Gemfile et Gemfile.lock

# Gemfile
# source 'http://rubygems.org'
source :rubygems

gem 'rails'
gem 'rake', '0.8.7'
gem 'youtube_it'
gem 'panda'
gem "nifty-generators"
# gem "mongoid", "2.0.0.rc.7"
gem "mongoid"
gem "mongoid-eager-loading"
# gem 'mongoid_search'
gem "bson_ext", ">1.1.5"
gem 'devise'
gem 'cancan'
gem 'hirb'
# gem 'heroku'
gem 'rest-client'
gem 'less' # needs the more plugin
# gem 'hash_extension'
gem 'aws-s3', :require => 'aws/s3' # s3.rb
gem 'jquery-rails', ">= 0.2.7" # rails g jquery:install
# gem 'mongrel', ">= 1.2.0.pre2"
gem 'delayed_job'
gem 'delayed_job_mongoid'
gem 'kaminari'

# Gemfile.lock
GEM
  remote: http://rubygems.org/
  specs:
    abstract (1.0.0)
    actionmailer (3.0.8)
      actionpack (= 3.0.8)
      mail (~> 2.2.19)
    actionpack (3.0.8)
      activemodel (= 3.0.8)
      activesupport (= 3.0.8)
      builder (~> 2.1.2)
      erubis (~> 2.6.6)
      i18n (~> 0.5.0)
      rack (~> 1.2.1)
      rack-mount (~> 0.6.14)
      rack-test (~> 0.5.7)
      tzinfo (~> 0.3.23)
    activemodel (3.0.8)
      activesupport (= 3.0.8)
      builder (~> 2.1.2)
      i18n (~> 0.5.0)
    activerecord (3.0.8)
      activemodel (= 3.0.8)
      activesupport (= 3.0.8)
      arel (~> 2.0.10)
      tzinfo (~> 0.3.23)
    activeresource (3.0.8)
      activemodel (= 3.0.8)
      activesupport (= 3.0.8)
    activesupport (3.0.8)
    arel (2.0.10)
    aws-s3 (0.6.2)
      builder
      mime-types
      xml-simple
    bcrypt-ruby (2.1.4-x86-mingw32)
    bson (1.3.1)
    bson_ext (1.3.1)
    builder (2.1.2)
    cancan (1.6.5)
    daemons (1.1.3)
    delayed_job (2.1.4)
      activesupport (~> 3.0)
      daemons
    delayed_job_mongoid (1.0.2)
      delayed_job (~> 2.1.1)
      mongoid (~> 2.0.0.rc)
    devise (1.3.4)
      bcrypt-ruby (~> 2.1.2)
      orm_adapter (~> 0.0.3)
      warden (~> 1.0.3)
    erubis (2.6.6)
      abstract (>= 1.0.0)
    hirb (0.4.5)
    i18n (0.5.0)
    jquery-rails (1.0.10)
      railties (~> 3.0)
      thor (~> 0.14)
    json (1.5.2)
    kaminari (0.12.4)
      rails (>= 3.0.0)
    less (1.2.21)
      mutter (>= 0.4.2)
      treetop (>= 1.4.2)
    mail (2.2.19)
      activesupport (>= 2.3.6)
      i18n (>= 0.4.0)
      mime-types (~> 1.16)
      treetop (~> 1.4.8)
    mime-types (1.16)
    mongo (1.3.1)
      bson (>= 1.3.1)
    mongoid (2.0.2)
      activemodel (~> 3.0)
      mongo (~> 1.3)
      tzinfo (~> 0.3.22)
    mongoid-eager-loading (0.3.1)
    mutter (0.5.3)
    nifty-generators (0.4.6)
    oauth (0.4.4)
    orm_adapter (0.0.5)
    panda (1.4.2)
      json
      rest-client
      ruby-hmac (>= 0.3.2)
    polyglot (0.3.1)
    rack (1.2.3)
    rack-mount (0.6.14)
      rack (>= 1.0.0)
    rack-test (0.5.7)
      rack (>= 1.0)
    rails (3.0.8)
      actionmailer (= 3.0.8)
      actionpack (= 3.0.8)
      activerecord (= 3.0.8)
      activeresource (= 3.0.8)
      activesupport (= 3.0.8)
      bundler (~> 1.0)
      railties (= 3.0.8)
    railties (3.0.8)
      actionpack (= 3.0.8)
      activesupport (= 3.0.8)
      rake (>= 0.8.7)
      thor (~> 0.14.4)
    rake (0.8.7)
    rest-client (1.6.1)
      mime-types (>= 1.16)
    ruby-hmac (0.4.0)
    thor (0.14.6)
    treetop (1.4.9)
      polyglot (>= 0.3.1)
    tzinfo (0.3.28)
    warden (1.0.4)
      rack (>= 1.0)
    xml-simple (1.0.16)
    youtube_it (1.4.2)
      builder
      oauth (>= 0.4.4)

PLATFORMS
  x86-mingw32

DEPENDENCIES
  aws-s3
  bson_ext (> 1.1.5)
  cancan
  delayed_job
  delayed_job_mongoid
  devise
  hirb
  jquery-rails (>= 0.2.7)
  kaminari
  less
  mongoid
  mongoid-eager-loading
  nifty-generators
  panda
  rails
  rake (= 0.8.7)
  rest-client
  youtube_it

1 votes

Déployez-vous l'application sur Windows également ? Si ce n'est pas le cas (par exemple, si vous déployez votre application sur Heroku), vous pouvez supprimer la dépendance à therubyracer dans votre environnement Windows. Je serai heureux de vous en dire plus si tel est votre scénario.

0 votes

@Dominic Sayers -- Non, pas sur Windows, mais oui sur Heroku. Ma supposition est, si je n'interagis pas directement avec une gemme qui ne peut pas être installée du tout sur Windows, mais Heroku étant Linux, donc cela devrait aller. Donc je ne sais pas exactement comment l'exclure des dépendances d'une application Rails. Je veux dire, je ne l'ai jamais spécifié dans mon Gemfile en premier lieu. Il est juste apparu comme ça dans ma "mise à jour du bundle" un jour. Merci !

67voto

Charles Lowell Points 931

Non, à ma connaissance, il n'y a aucun moyen d'installer ce joyau sous Windows. Le problème est qu'il n'y a actuellement aucune version pré-compilée de la gemme libv8 pour Windows, et la version source est seulement compatible avec *nix. Il n'est pas nécessaire qu'il en soit ainsi, il faut juste que quelqu'un prenne le temps de faire fonctionner la compilation pour Windows. https://github.com/cowboyd/libv8

Cela dit, Windows devrait être livré avec un JScript, le moteur d'exécution JavaScript de Microsoft, que Rails (par l'intermédiaire de execjs ) sera automatiquement détecté et utilisé, vous devriez donc pouvoir supprimer votre dépendance à therubyracer.

En tant que mainteneur de cette gemme, cela m'attristerait bien sûr, mais cela devrait vous mettre sur la voie.

0 votes

Oh wow, quel plaisir de vous avoir (le mainteneur) pour répondre à ma question MERCI ! !! -- Merci pour l'indice execjs, je vais le consulter. Désolé de vous déranger, savez-vous par hasard comment on peut trouver les dépendances des gemmes dans Rails ?

0 votes

Nik, si tout ce que vous faites est d'utiliser le pipeline d'actifs vaniall Rails 3.1 avec coffeescript, alors vous devrait vous pouvez simplement utiliser la gemme execjs qui détectera par délégation que vous êtes sous Windows et utilisera l'interpréteur JScript de Microsoft. Vous n'auriez alors plus besoin d'avoir therubyracer dans votre Gemfile.

0 votes

J'ai été en mesure de mettre à jour le Gemfile par le biais de "bundle update development" -- Raison : J'ai cette ligne qui est scopée au groupe :production du Gemfile qui installe therubyracer comme je l'ai lu quelque part qu'il est nécessaire pour Heroku ( si oui ou non il est encore nécessaire, je ne suis pas sûr) donc chaque fois que je fais un simple "bundle update" la même erreur est jetée, mais si je fais le ci-dessus "bundle update development" il fonctionne. --- J'ai lu pas mal d'articles de blog qui répètent essentiellement ce que vous dites, à savoir que execjs devrait intervenir et dire à rails d'utiliser le moteur MS natif, mais ce n'est pas vrai...

13voto

Dominic Sayers Points 1148

C'est essentiellement ce que Nik a fait, je crois :

Dans votre Gemfile, isolez la gemme TheRubyRacer dans l'environnement de production comme suit :

group :production do
  gem 'therubyracer-heroku', :platform => :ruby
end

Dans votre environnement de développement, au lieu d'un simple bundle install faire

bundle install --without production

ou, comme le suggère Nik, bundle install development . Lorsque vous déployez sur Heroku, il installera la gemme car il s'agit de l'environnement de production.

Gourous de Rails : suggérez des modifications pour rendre cela moins nul.

0 votes

Oui, en effet. Le Gemfile que j'ai utilisé ces deux dernières semaines est similaire et je fais "bundle install development" pour éviter tout message d'erreur. J'espère que l'équipe centrale de Rails apportera des ajustements à Rails afin que l'installation/le busage général de Rails sur les trois plateformes principales soit essentiellement le même. Merci de revenir sur cette question, Dominic.

2 votes

Vous pourriez ajouter gem 'therubyracer', :platform => :ruby dans votre Gemfile, afin que therubyracer n'est installé que sur linux et OSX, et pas sur Windows

0 votes

Merci pour la suggestion de Nathan.f77. J'ai modifié ma réponse comme vous le suggérez.

11voto

Hiran Points 106

La raison de tous ces problèmes est le therubyracer-0.11.0beta1-x86-mingw32.gem et le v8.dll.

J'ai compilé les fichiers dlls et gem nécessaires et les ai téléchargés sur github.

téléchargez le paquet et suivez les instructions.

https://github.com/eakmotion/therubyracer_for_windows

0 votes

J'ai essayé ce que vous avez dit dans les instructions et j'obtiens le message Successfully installed therubyracer-0.11.0beta1-x86-mingw32 1 gem installed Installing ri documentation for therubyracer-0.11.0beta1-x86-mingw32... Installation de la documentation RDoc pour therubyracer-0.11.0beta1-x86-mingw32... et copié les fichiers dll, dans le dossier bin, redémarré la machine 3 fois. Je fonctionne sous Windows 7. Toujours l'installation groupée montre une erreur.

0 votes

Placez la gemme less-rails dans votre fichier bundle et exécutez bundle install ex :- gem 'less-rails' gem 'therubyracer'.

1 votes

@Hiran J'ai essayé sous mon C:\RailsInstaller\Ruby1.9.3\bin mais ça ne marche pas dites-moi comment je peux le réparer j'ai toujours du mal à supprimer ce problème de therubyracer

4voto

Alex Points 493

Il y a pour Windows . Il peut être téléchargé et installé manuellement par gem install therubyracer-0.11.0beta1-x86-mingw32.gem .

0 votes

ERROR: Could not find a valid gem 'therubyracer-0.11.0beta1-x86-mingw32.gem' (>= 0) in any repository

4 votes

NOTE : vous devez télécharger la gemme dans votre répertoire local et la référencer localement Lien de téléchargement : github.com/downloads/stereobooster/therubyracer/

0 votes

@blockloop pouvez-vous me dire comment vous avez fait ça ? J'ai cloné le répertoire, suivi les instructions. Cela n'a pas fonctionné. Puis j'ai lu votre truc, et dans Gemfile j'ai indiqué le chemin où j'ai sauvegardé therubyracer-0.11.0beta1-x86-mingw32.gem. Mais quand je lance le bundle, il ne le détecte pas.

2voto

jdc Points 501

Pour répondre en partie à votre question sur Rails 3.1, voici ce qu'il en est...

Rails 3.1 utilise actuellement une gemme qui nécessite l'installation d'un runtime javascript sur la machine. Sur Mac, vous n'avez généralement pas à vous soucier de cela puisqu'il en a déjà un, mais sur Linux (et je pense que Windows aussi) vous devez en installer un. Ainsi, therubyracer, ou parfois node ou nodejs, sont parfois installés car ils fournissent cela.

Cependant, l'un des principaux responsables de Rails a déclaré qu'ils prévoyaient de corriger cette dépendance avant la sortie de la version finale de Rails 3.1, donc avec un peu de chance, cela se fera et la dépendance disparaîtra.

0 votes

Je vois que Rails 3.1 a/aura besoin de cela, probablement pour le packaging des ressources. Puisque vous parlez de nodejs, j'ai entendu dire qu'ils pourrait a une version pour Windows, je vais juste l'installer sur mon ordinateur pour voir si rails le "détecte" et ignorer l'installation de therubyracer (pour le moment). Merci pour votre aide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X