views:

232

answers:

8

Hi guys

I would like to know if anyone meet a similar situation.

What are the reasons for a company to decide that you must develop using Linux environment (virtual machine) and not Windows environment?

Here there's no workstations with Linux at all - all computers have Windows installed. There's one production Linux server.

Is it possible to develop ruby in Windows and deploy your application on Linux?

What would be the advantages of not using Windows just for development? Is it just better performance?

thank you

+10  A: 

I would think the main advantage is that your development environment is similar to your target deployment environment, so when you finally deploy, you hopefully have fewer issues related to a different environment. This might be more relevant for desktop apps than for server-based web apps, though in both cases you'd have to make sure your dependencies (UI widgets or server process) are available and similar enough on both platforms.

Other advantages? Developing on Linux is probably cheaper. Can't say the performance is always going to be better though.

FrustratedWithFormsDesigner
+1 Developing on the same platform you're targeting for production is an easy way to sidestep lots of cross-platform environment issues.
Ophidian
+1 I don't know about Ruby, but many times filesystem (path separator, case-sensitivity) and line-ending differences can prove annoying when programmers use a different platform than the target platform.
ninjalj
A: 

It is certainly possible to develop Ruby on windows that is deployable to Linux.

There may be some difference with Gems if they were written in low level C, but this is pretty rare.

Mongus Pong
+1  A: 

What are the reasons for a company to decide that you must develop using Linux environment (virtual machine) and not Windows environment?

  1. Other than some technical issue i think windows need license and Linux doesn't
  2. Mostly Ruby is used by small companies so using linux benificial for them

Is it possible to develop ruby in Windows and deploy your application on Linux?

YES. But it is good practise to have a same Development & Production enviorment

What would be the advantages of not using Windows just for development? Is it just better performance?

Most of the Servers run on Linux and it's always good to have a same Development & Production enviorment

Salil
+2  A: 

I have developed a substantial and complex web site with Ruby on Rails using Windows for development and two different flavors of Linux for production. There were a couple of hiccups related to libraries that must be compiled, like ImageMagick.

When I got a new laptop that came with Vista, I was unable to get MySQL to run on it, and I switched to using Linux inside VirtualBox. While I doubt that I will ever be converted to the Linux user experience, I did find that it was somewhat easier to get all of the components working together properly on Linux. Now, I do almost all of my dev work inside VirtualBox, as it allows me to keep all of my client work compartmentalized, and I am easily able to spin up new development environments that have specific requirements that might not play well with my preferred desktop setup.

So, yeah, it can be done, but don't disregard the potential of working inside VirtualBox. It's a wonderful environment.

Adam Crossland
regarding the MySQL with Vista, I also had a similar issue
Junior Mayhé
+2  A: 

My work environment uses Linux too. We develop mostly in Java, but it's a similar story.

The company's Windows laptops are severely hobbled by anti-virus software (which is very necessary, as in a large company any security hole will eventually be exploited by viruses inadvertently dragged into the company).

Our Linux boxes are locked down to the extent that we can't do major configuration changes, but no virus scanner/intrusion detector is necessary. Relative to the company standard, our Linux machines are a joy to work with! Our memory and CPU are mostly available for the tasks at hand.

This setup has also proven easier and cheaper for our admins to manage.

Carl Smotricz
+4  A: 

Apart from the obvious reason, possible problems with compatibility of certain gems, database servers etc., there is another, perhaps more subtle one:

There is a cultural difference between Windows folks and *nix folks, reflected in many ways, from the way we perform everyday tasks (such as searching for files on disk, or searching for a string in files), the way we set up and administer the system, to what do we picture when someone mentions "an application".

Ruby comes from the second camp, and while it runs perfectly on Windows as well, it somehow reflects the world it's been born and maintained within. A banal example would be irb. To someone used to a command line interface, irb is absolutely natural and comfortable tool. Command line does exist in Windows world as well, but it's really pretty hidden and usually the interface for the last resort. Whole set of Perl-isms was borrowed by Ruby, and Perl was created as a Unix scripting language.

So, in my opinion, picking Linux as a development platform could make you a better Ruby programmer, simply by forcing you to adopt the cultural guidelines of *nix world.

Mladen Jablanović
+1  A: 

As others have noted, there's a big advantage in having your deployment and development environments be at least reasonably similar.

I have to disagree with those who have said that compatibility is not a big deal. We have a pretty big site and use a lot of gems, and we've run into problems with the sole Windows-based developer on the team. There are certain gems he just can't use properly or at all (e.g. json, gitjour, mechanize, hpricot), which means there are features to which he can't contribute. We've encountered zero platform differences between Mac OS X and Linux.

The fact of the matter is that Windows is a distinctly second-class platform in the Ruby and especially the Rails world. You can do it, but I wouldn't recommend it.

seriousken
This answer. Ruby is intended for UNIX. To quote the Ruby FAQ: "Ruby is written to take advantage of the rich feature set of a Unix environment. Unfortunately, Windows is missing some of the functions, and implements others differently."
Legion
A: 

reformat a harddisk and install ubuntu, boot from a flash disk, run as a vm through virtual box or the like, there are many ways to run linux in your situation, and it will be an easier development solution for you. its always better to develop in the os environment you plan to deploy on. also, you could check out jruby. if you still decide to develop on windows, checkout

  1. help.github.com for how to install git and cygwin on windows

  2. ruby-lang.org to install ruby for windows

  3. and rubygems.org to install rubygems for windows

heh, the last best reason: a terminal shell in linux isn't limited to 80 columns wide ;)

Jed Schneider