therubyracer gem on windows
Solution 1
No, there is no way that I know of to currently install this gem on Windows. The problem is that there is currently no pre-compiled version of the libv8 gem for Windows, and the source version is only compatible with *nix. It does not necessarily have to be that way, it just requires somebody taking the time to make the compile work for Windows. https://github.com/cowboyd/libv8
That said, Windows should come with a JScript, the Microsoft JavaScript runtime, which Rails (via execjs) will automatically detect and use, so you should be able to just remove your dependency on therubyracer.
As the maintainer of that gem, this would of course make me sad, but it should get you on your way.
Solution 2
This is essentially what Nik has done, I believe:
In your Gemfile isolate the TheRubyRacer gem to the production environment like this:
group :production do
gem 'therubyracer-heroku', :platform => :ruby
end
In your development environment, instead of a plain bundle install
do
bundle install --without production
or, as Nik suggests, bundle install development
. When you deploy to Heroku it will install the gem because it is the production environment.
Rails gurus: please suggest edits to make this less sucky.
Solution 3
The reason for all of these problems is the therubyracer-0.11.0beta1-x86-mingw32.gem and the v8.dll.
I have complied the necessary dlls and gem files and upload them to github.
download the package and follow the instructions.
https://github.com/eakmotion/therubyracer_for_windows
Solution 4
There is build for windows. It can be manually downloaded and installed by gem install therubyracer-0.11.0beta1-x86-mingw32.gem
.
Solution 5
To answer part of your question about Rails 3.1, here's the deal...
Rails 3.1 currently uses a gem that requires a javascript runtime to be installed on the machine. On Mac you typically don't have to worry about this since it already has one, but Linux (and I think Windows too) you need to install one. So, therubyracer, or sometimes node or nodejs, are sometimes installed since they provide that.
However, one of the main Rails guys said they plan to fix that dependency before the final Rails 3.1 release, so hopefully that'll happen and the dependency will be gone.
Nik So
Updated on July 13, 2020Comments
-
Nik So almost 4 years
I've been peacefully developing on Windows without adding any gems for a few weeks now and today I decided to do a bundle update, but I cannot get through this gem called therubyracer. I have the devkit installed and it is working according to the documentation's verification procedure.
My question is: is there a way to install this gem at all on windows?
And is this gem going to be required by rails 3.1 and this is why now that I do a bundle update it is being 'slipped' into the rails 3.0.8 as a gesture of early kick start for future 3.1 migration?
EDIT including Gemfile and 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
-
Nik So almost 13 yearsOh wow, what a pleasure to have you (the maintainer) to answer my question THANKS!! -- Thanks for the execjs hint, I will look it up. Sorry to be a bother, do you happen to know how one can find out gem denpendencies in Rails?
-
Nik So almost 13 yearsI see so Rails 3.1 does/will require that probably for the asset packaging thing. Since you mention about the nodejs, I've heard that they might have a version for windows, I'm just going to what-the-hell install it on my computer first to see if rails "detects" it and ignore installing therubyracer (for now). Thank you
-
Charles Lowell almost 13 yearsNik, If all you're doing is using the vaniall Rails 3.1 asset pipeline with coffeescript, then you should be able to just use the execjs gem which will delegate detect that you are on Windows and use the Microsoft JScript interpreter. Then you wouldn't need to have therubyracer in your Gemfile at all.
-
Nik So almost 13 yearsI have been able to update the Gemfile through "bundle update development" -- Reason: I have this line which is scoped to the :production group of the Gemfile that installs therubyracer as I read somewhere that it is needed for Heroku ( whether or not it is still needed, I am unsure) so everytime I do a plain "bundle update" the same error gets thrown, but if I do the above "bundle update development" it works. --- I have read quite a handful of blog posts that basically reiterate what you're saying, that execjs should kick in and tell rails to use native MS engine, but not true...
-
Dominic Sayers almost 13 yearsHi Nik, this was basically the solution I was going to propose. I think it's OK - you're developing on one environment and deploying on another so the gem sets may well be different. If you're hoping it will infer the environment automagically then I don't know a way of doing that. But I'm not a Rails guru so it might be possible.
-
Nik So almost 13 yearsYes, indeed. The Gemfile I've been using the past couple of weeks looks similar and I do do "bundle install development" to avoid any error messages. I do hope the Rails core team will bestow adjustment to Rails so to make general Rails installation/ussage across the three main platform essentially the same. Thanks for keeping coming back to this question Dominic
-
ndbroadbent over 12 yearsHi, just to add a quick note: You can write
gem 'therubyracer', :platform => :ruby
in your Gemfile, so thattherubyracer
is only installed on linux and OSX, but NOT Windows. -
ndbroadbent over 12 yearsYou could add
gem 'therubyracer', :platform => :ruby
in your Gemfile, so thattherubyracer
is only installed on linux and OSX, and not Windows -
Dominic Sayers over 12 yearsThanks for the suggestion nathan.f77. I've edited my answer as you suggest.
-
Rafa de Castro almost 12 yearsNathan, that's true but under cygwin you are in windows and :platform => :ruby has no effect
-
blockloop over 11 years
ERROR: Could not find a valid gem 'therubyracer-0.11.0beta1-x86-mingw32.gem' (>= 0) in any repository
-
blockloop over 11 yearsNOTE: you have to download the gem to your local directory and reference it locally Download link: github.com/downloads/stereobooster/therubyracer/…
-
Jay over 11 yearsI tried what you said on the instructions and I'm getting message Successfully installed therubyracer-0.11.0beta1-x86-mingw32 1 gem installed Installing ri documentation for therubyracer-0.11.0beta1-x86-mingw32... Installing RDoc documentation for therubyracer-0.11.0beta1-x86-mingw32... and copied the dll files, to bin folder, restarted machine 3 times. I'm running on windows 7. Still bundle install shows error.
-
Hiran over 11 yearsput less-rails gem in your bundle file and run bundle install ex :- gem 'less-rails' gem 'therubyracer'
-
swapnesh almost 11 years@Hiran I tried it under my C:\RailsInstaller\Ruby1.9.3\bin but it wont work..let me know how do i fix it..im still struggling in removing this therubyracer problem
-
thinkOfaNumber almost 11 yearsThe instructions in your link work flawlessly on Windows7 64bit. Thanks!
-
bad_keypoints over 10 yearsGetting
v8_context.rb:2:in require': cannot load such file -- v8 (LoadError) on running rails server
. Besides, I don't see libv8 in the Gemfile.lock -
Ka Mok almost 8 years@blockloop can you tell me how you did this? I cloned the directory, followed the instructions. Didn't work. Then I read your thing, and in Gemfile pointed the path to where I saved therubyracer-0.11.0beta1-x86-mingw32.gem. But when I run bundle it doesn't detect it.
-
Tom Lord about 7 yearsThe
libv8
project can now be found here: github.com/cowboyd/libv8. At the time of writing, there is an open issue regarding Windows support: github.com/cowboyd/libv8/issues/217