Ruby on Rails for Windows

Ruby is multiplatform language. But not all OS suit it good enough. Especially, Windows
21 June 2017   3186

Traditionally, it is customary to work with Ruby on Linux or Mac OS. But sometimes it becomes necessary to develop Ruby on Rails on Windows. For example, in a situation where there is no computer with a more suitable OS at hand, and there is no desire or opportunity to raise a virtual machine. Let's see how well Ruby feels in the operating system from Microsoft.

Ruby

A dynamic, open source programming language, focused on simplicity and productivity
 

Ruby on Rails

Ruby on Rails (RoR) - a framework written in the Ruby programming language

Is it possible to install Ruby on Rails on Windows?

Yes. You can run a full-fledged server for RoR windows development. The easiest way to do this is to use the RailsInstaller utility, which also includes support for the Ruby on Rails framework. After downloading the application, just run the .exe file and follow the installer's instructions. Any version of Windows is supported, starting with XP.

For those, who would like to control the Ruby installation process on Windows, there is an opportunity to install all necessary modules. Process looks like this:

  1. Download and unpack Ruby from here;
  2. Install Development Kit;
  3. Unpack SQlite to Ruby directory;
  4. Install SqLite and necessary gems and frameworks using Ruby's Comand Prompt.

rubyinstaller
RubyIntaller webpage

Rubyinstaller is made for Windows 7 and upper, his workability under Windows XP, Windows Server, Windows 2000, Windows NT, Windows Vista, Windows 98 and older isn't guaranteed.

What problems can appear while running Ruby on Rails on Windows?

As a rule, these type of instructions finishes with the worlds: “Now Ruby for windows is ready to work” but not in this case. Installation is the smallest issue that you will face. You will also have to deal with:

  • Wrong time format. Due this issue, errors with gems installation can appear, even with Ruby on Rails framework. In order to fix this issue, you have to change all time formats in "specification" directory to s.date = %q{2017-01-01}.
  • Issue with gems launch, such as Nokogiri, Devise, Selenium-webdriver. Sometimes they just dont work with Windows and it’s hard to find the cause of the problem because there’s no info in documentation. Sometimes it is impossible to fix such bugs.
  • Slow interpreter. For example, if Guard is used as a command line, standard test can take more than a minute.
  • Many popular Ruby web-servers aren't supported for Windows.

Due to all these issues, there aren’t many Windows Ruby developers. That’s why the gem developers don’t test their products on Windows or just don’t bother about it’s workability on Windows. So, there is no need to wait when Windows will become more friendly with Ruby.

Running Ruby or Ruby on Rails on Windows is a difficult task without any final profit. Most of Ruby features wont run in Windows. a beginner can find large amount of learning courses with in-browser coding, so even for a first steps in Ruby, windows is a bad choice. As for me, I’ve started learning Ruby on Linux.
 

Andrey Axenov
Evrone Back End developer

Ruby IDE for Windows

Most of the standard text editors work great with Ruby on Windows. But, if you need a Ruby on Rails Windows IDE, the choice is not very big.

RubyMine. Specialized development environment from JetBrains. It works with any windows version, starting from xp, including 64-bit systems; supports all popular Ruby frameworks, project creation and management, great code integration with autocompletion and fast navigation. Also, application can be used for other programming languages, such as: JavaScript, HTML, CSS.

Disadvantage - high price with the need of prolongation for every year.

NetBeans. Free IDE, supports Windows Vista and higher, including 64-bit systems, but doesn’t support Windows 10. Besides Ruby, HTML, CSS, PHP, Java, C, C++ are also supported.

Features:

  • Debugging tools that monitor the performance speed of the application in the real time and factors, that influence it.

  • Ability to create own plugins easily.

  • Ability to deploy created projects outside the IDE.

Komodo. Environment supports Windows 7 and higher, also including Windows Server 2008 and higher. Powerful development tool that fully supports more than 100 programming languages. Popular bug tracker services, Ruby frameworks, code debugging, simultaneous work with several projects are also supported. But, universality has high price.

My friend recently started to learn Ruby on Rails, I’m his mentor. He had a big drama trying to install Ruby on Rails on windows, without any luck. There are many jokes in developers community regarding Rails and Windows connectivity. I would recommend for every Ruby newbie to learn it straight on Linux or Mac os.
 

Dmitry Karpunin
Chief Front-End Developer at Evrone

When it is necessary to run Ruby on Rails on Windows?

If you have an opportunity - don’t do that. If you'll run Ruby on Rails for Windows, sooner or later you will face insoluble problems that will slow down your development or even make it impossible. If you are able to work with this programming language on Linux or Mac OS, that’s the thing you have to do.

So when it is necessary to run Ruby on Rails on Windows?

  1. You don’t have proper equipment by the hand, but you gotta code right now. For example, your PC is broken, and the only left computer is very old and it cannot support virtual machine. But even in this situation you can use Engine Yard or Cloud9 as an option.
    Feel free to learn more about the best Ruby IDEs
  2. You would like just to test Ruby. For example, you’ve started to learn this programming language recently. You can make first steps in Windows. if you don’t need gem support, clean Ruby on Rails for Windows works great.
    Here you can have more info about learning Ruby on Rails and Ruby on Rails guides.

In all other cases, Ruby on Rails development on Windows will bring more issues than profit.

Are you working with Rails on Windows?

Are you ready to work with Ruby on Rails using Windows operating system despite all its abovementioned disadvantages? Or you are using another OS for Ruby on Rails development? Please, share your thoughts with the community. Also, after the voting, you will be able to see what people like the most.

DateTime, Timestamp, Time and Date in Rails

Learn about key differenece between DateTime, Timestamp, Time and Date in Rails
31 October 2017   626

The difference between different date/time formats in ActiveRecord have little to do with Rails and everything to do with whatever database you're using.

Using MySQL as an example (if for no other reason because it's most popular), you have DATEDATETIMETIME and TIMESTAMP column data types; just as you have CHARVARCHARFLOATand INTEGER.

So, main differences: DATE only stores a date, TIME only stores a time of day, while DATETIME stores both.

The difference between DATETIME and TIMESTAMP is a bit more subtle: DATETIME is formatted as YYYY-MM-DD HH:MM:SS. Valid ranges go from the year 1000 to the year 9999 and everything in between. While TIMESTAMP looks similar when you fetch it from the database, it's really a just a front for a unix timestamp. Its valid range goes from 1970 to 2038. The difference here, aside from the various built-in functions within the database engine, is storage space. Because DATETIMEstores every digit in the year, month day, hour, minute and second, it uses up a total of 8 bytes. As TIMESTAMP only stores the number of seconds since 1970-01-01, it uses 4 bytes.

You can read more about the differences between time formats in MySQL here.

In the end, it comes down to what you need your date/time column to do. Do you need to store dates and times before 1970 or after 2038? Use DATETIME. Do you need to worry about database size and you're within that timerange? Use TIMESTAMP. Do you only need to store a date? Use DATE. Do you only need to store a time? Use TIME.

Having said all of this, Rails actually makes some of these decisions for you. Both :timestamp and :datetime will default to DATETIME, while :date and :time corresponds to DATE and TIME, respectively.