Install and run RVM with bundler on Windows (Drupal Omega 4 specific)

Windows and Omega 4

Unlike on UNIX based systems, installing and configuring RVM on a Windows machine properly in order to be able to use the new possibilities in Drupal's Omega 4 theme could become a difficult task. But running that process through the cygwin environment makes it possible.

Installing cygwin and required dependencies

Make sure you install the 32-bit version of cygwin, as otherwise you could get errors when trying to compile your ruby when installing it through rvm. So Install cygwin with following packages and their dependencies:

automake, colorgcc, curl, gcc, gcc-core, git, git-completion, git-gui, git-svn, gitk, libreadline7, libtool, libyaml-devel, libyaml0_2, make, mercurial, mingw64-i686-gcc-g++, nano, ncurses, openssh, openssl, openssl-devel, patch, readline, unzip, zlib, zlib-devel

Installing RVM

Open cygwin's command prompt and start the installation of RVM with the following command:

curl -L https://get.rvm.io | bash -s stable

This should download and install RVM in your in /home/user01/.rvm/ directory. So far so good. Just type

rvm -v

to ensure that RVM is installed. If you have installed ruby on your Windows machine previously - e.g. through something like http://rubyinstaller.org/ - I recommend to go ahead and uninstall it, as you will be managing your rubies through rvm from now on anyway. So now if you type

ruby -v

you should get something like "ruby not found", which we will change very soon.

Installing the ruby for your omega theme

Assuming, that you have a omega subtheme in your drupal installation, you can now navigate in the command line to the root of the subtheme. As soon as you are there RVM should recognize by the contents of the .ruby-version file that it needs to install a specific ruby version for that directory. In my case I get a message like

ruby-1.9.3-p448 is not installed.
To install do: 'rvm install ruby-1.9.3-p448'

So start the installation of the required version of ruby by entering

rvm install ruby-1.9.3-p448 --autolibs=0

Just press any key to continue if you're asked to install additional requirements. Then the installer should download, extract, configure, compile and install the version of ruby you specified.

Running bundler to install the necessary gems

If all went well you now have rvm and the version of ruby required by omega and you can run

bundle install

at that point, in order to install all gems for your omega theme. You will probably get an error of something like "... stack level too deep (SystemStackError)...". This is a cygwin/ruby issue and a good explanation and solution can be found here. So just run

peflags -X409600 which ruby

and now you can repeat

bundle install.

This should download and install all gems, specified in the Gemfile file, create the Gemfile.lock just as usual.

Solve errors while running compass watch

At that point you can already run

compass watch

to have your sass files compile according to the settings in the config.rb file. The initial compilation will succeed, but you will probably get an error when you edit and the try to save a sass file of something like ("user01" is obviously my username at this cygwin installation. Yours may be different):

ArgumentError on line ["465"] of /home/user01/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/pathname.rb: different prefix: 
...
Run with --trace to see the full backtrace

This is a Windows-file system/compass issue and you can find good information of what is going on here.

The file you should edit in this case is the pathname.rb, which belongs to the fssm gem which was installed specifically for your theme by bundler earlier. It is residing in the /home/user01/.rvm/gems/ruby-1.9.3-p448@omega.new_omega/gems/fssm-0.2.10/lib/fssm directory.

Edit line 26 and append the following code to it

unless path[0, 1] == File::SEPARATOR

so that the full line 26 is reading

array[0] += File::SEPARATOR if path[0, 3] =~ SEPARATOR_PAT unless path[0, 1] == File::SEPARATOR

Now you can try out

compass watch

again and it should work.

So, let Omega 4 rock also for Windows Devs!

If you have discovered any other issues or have further recommendations please leave a message in the comments. Thanks!

Comments

Sebastian Siems... (not verified)

Very cool. Thanks for publishing this - I normally encourage people to use VMs for running their dev stack if they don't want to switch away from Windows for whatever reason. Also, I never even tried setting it up on Windows and didn't have any plans to do so (lazy me). So thanks again for writing this! Would you mind publishing it in the d.o handbooks for Omega 4.x (or, alternatively, link to it from there). We could use a resource to direct our Windows users to...

dimitar

Hi Sebastian,

thanks for encouraging this. I've published the article on the d.o. omega docs page. It's probably notable that this guide does not cover runnung guard, as it just wasn't possible - I get a child_info_fork error, which could be connected to any software I have installed on my Windows machine conflicting with cygwin. However the compass-stuff works quite well, so it's something.

Agnes (not verified)

Thank you for this! For anyone else facing problems installing the required ruby version, I had to set autolibs=0 for it to work.
rvm install ruby-1.9.3-p448 --autolibs=0

dimitar

Hi Agnes, thanks for that! It's really good to see your input here.

eric (not verified)

I kepp trying to install ruby on cygwin but when I type rvm install ruby-1.9.3-p448 --autolibs=0 it keep telling me this:
'ruby' was not found, cannot install rubygems unless ruby is present (Do you have an RVM ruby installed & selected?)

dimitar

For anyone interested: this article has been published also on d.o. and has created some very interesting discussion about the topic. Check it out here https://www.drupal.org/node/2138087

Add new comment