a Digital Ocean Alternative

I have always recommended Digital Ocean to host Ruby on Rails.

But I have recently come to know about Vexxhost, a Canadian host which has partnered with Cloud66. They offer same low rates of Digital Ocean.

Here are Vexxhost pricing as per January 2014

Image

And here is the pricing of Digital Ocean as per same date

Image

I have not tried Vexxhost yet, but heard and read good reviews about. Their servers are currently in Canada only, while Digital Ocean has servers in NY, Amsterdam and Singapore.

So if for some reason you are looking for an alternative to Digital Ocean hosting and don’t want to pay more, Vexxhost seems to be your current best bet.

How to Update Your Fork on Github for Windows

I have installed GitHub for Windows and don’t regret it. It saved me remembering every git command, and let me work more easily with repositories.

I am sure,  not many developers will download it, specially Ruby on Rails developers who are used to writing commands and are not fan of development using tools with rich UI.

But for me, I needed something to simplify my git workflow, while working with others on an open source project related to Ruby on Rails facebook group.

One of the main processes developers use on open source projects are forking and updating their forks with the original repository.

Unfortunately this feature is still not available on GitHub for Windows 1.2.3.0 (Nov 13).

I checked with the wonderful support team of GitHub

My question:

Is it true that, in GitHub for Windows, we cannot update our fork with the last commits from the original repository, and we have to do it using the shell manually?

Their answer:

That’s correct. We know how important this is in the ‘fork and submit pull request’ workflow, and as a result this is high on our list of things to implement in GitHub for Windows. Unfortunately I can’t give a firm date for when we’ll release this feature.
 
Thanks for letting us know you’d like to see this added, and be sure to keep an eye on github.com/blog and the GitHub for Windows release notes for updates.

So for now if you need to update your fork with the latest from the original repository, you will have to run the shell as shown below:

then run the commands:

git remote add upstream https://github.com/user/original_repo_you_forked_from

git fetch upstream
git merge upstream/master

Then press the sync button, to sync to your fork on github website.

 

 

Detecting User Location with Rails

So building my little web app (An Arabic tool to convert Arabic numbers to their text representation), I needed to detect user’s country to improve the site usability by improving the defaults.

After
researching, found this to be the simplest way possible. It does not
even require a database. As you will be connecting to third party
database.

- Create an account at IPInfoDB.com

- Once you register, you will get your api key.

- Download geo-ip Ruby Gem (gem has not been updated since March 2012, but it is still working like a charm with even with latest Rails 4)

- Now, all you need to do is to create an initializer file in the folder config/initializers (call it geo-ip):

GeoIp.api_key = ‘YOUR_API_KEY’

- Then you can get the ip of the user by this rails method:

user_ip = request.remote_ip

- From the received ip, you can now get location info of users by calling methods of the geo-ip gem:

country = GeoIp.geolocation(user_ip, :precision => :country)

For all geo ip methods, please the check out the gem documentation

Google Map Marker

Google Map Marker (Photo credit: [ Mooi ])

Cloud66 Deployment Failure When Upgrading to Rails 4

As you may know if you follow my blog. I develop on a Windows machine (and everyone hates me for that).

As I don’t know much about web server, vps, clouds, Capistrano..etc I decided to use cloud66.com to make deployment of code hosted on githib easier.

After upgrading to Rails 4, app worked on my local machine, but not on my production environment (digital ocean ) managed by cloud66

I received errors related to Capistrano and Psych which I know nothing about

/usr/local/lib/ruby/1.9.1/psych.rb:154:in `parse‘: (): couldn’t parse YAML at line 0 column 5 (Psych::SyntaxError)
from /usr/local/lib/ruby/1.9.1/psych.rb:154:in `parse_stream’
from /usr/local/lib/ruby/1.9.1/psych.rb:125:in `parse’
from /usr/local/lib/ruby/1.9.1/psych.rb:112:in `load’
from
/var/deploy/cloud66/shared/bundle/ruby/1.9.1/gems/capistrano-2.15.4/lib/capistrano/recipes/deploy/assets.rb:26:in
`parse_manifest’
from
/var/deploy/cloud66/shared/bundle/ruby/1.9.1/gems/capistrano-2.15.4/lib/capistrano/configuration/namespaces.rb:191:in
`method_missing’
from
/var/deploy/cloud66/shared/bundle/ruby/1.9.1/gems/capistrano-2.15.4/lib/capistrano/configuration/namespaces.rb:191:in
`method_missing’

So I have contacted cloud66 team, who advised it is an asset pipeline issue caused by upgrading to Rails 4. And they suggested to delete the manifest cache files (/var/deploy/tafqit-amesterdam/web_head/shared/assets/manifest*).

I logged in to my cloud66 dashboard where I have web console access to my server, I navigated in directories and deleted files as instructed and deployment went fine, now I have my site upgraded to Rails 4! What a joy!.

This was my first time where I had to navigate files on Ubuntu, but found out to be easy, simillar to DOS.

all Ubuntu console commands can be found here

Abandoned mine: view down rails (4 of 6)

Good bye old Rails 3

Upgrading to Rails 4 for these who used RailsInstaller

RailsInstaller still has not updated to Rails 4 in its bundle. But you can do the upgrade yourself.

It worked well for me, follow this screencast and you will be safe.

http://railscasts.com/episodes/415-upgrading-to-rails-4

Deploying Ruby on Rails Applications for Beginners

You always see on Rails forums, rails newbies asking about their best option for hosting their small web app.

In the world of php, deploying is a much simpler process with choices among thousands of good cheap hosts.

When it comes to Rails less options are available, although significantly increasing these days, and process is more complicated.

The biggest issue arises when you are like me a Windows user and developed your app on your Windows machine. Of course, the first thing every other developer may tell you is to move to Linux (Ubuntu is by far the most popular).

Actually moving to Linux for Rails developers may be the right decision which I still have not taken. And this is why I made this blog.

( As you may have already noticed I usually target new rails developers on Windows )

So the most recommended host for beginners, is Heroku, extremely to use and usually it is easy to move your site from your local Windows machine to their servers. The problem with Heroku is their prices. They have a free basic account, but does not offer much, if you get some traffic, soon you will have to upgrade and rate will jump drastically.

After some research I found that my best bet is to use Digital Ocean

Their basic account is for $5 a month, no other Rails host can beat that, trust me.

Now after registering with Digital Ocean, I found it a bit complicated to move my local Rails App to their cloud, so I was introduced to Cloud 66

They say it very clearly: Cloud 66 makes deploying and running of Ruby on Rails apps simple. And it is so true. All you need is your Digital Ocean account, and your app on github. Cloud66 will analyze your code and create the right environment on Digital Ocean.

How to write Arabic in Sublime Text 2

Sublime Text although my favorite editor still lacks support for Arabic characters! even with its latest version Sublime Text 3.

I hope they consider adding the support for Arabic characters on their priority list.

Anyway this did not put me off from using it, because am on Windows and I hate Notepad ++.

So a few days back I needed to write a very little web app which converts a number to its word representation in Arabic.

So needed to display Arabic characters on the browser. When I write the Arabic strings in my code they don’t display correctly, they are like disconnected…but of course when I run the app on the browser the font displays correctly.

Am not the only one, there a programmer who already  left a message on the sublime text forum but still did not get a reply. And am sure there are many who probably decided to quit Sublime Text for the same reason.

So, searched for a plugin (aka package) and found one created by a non Arabic guy! Isn’t that so generous! read the full post with installation instructions.

I would recommend you use the font “courier new” instead of his example of using “arial”. “courier new” is good for code and supports Arabic.

Have Ruby on Rails Installed on Windows the Best Way

This is a complete step by step instructions with minimal explanations, on how to set up your Windows machine for starting building your RoR application in the most efficient and professional way.

Most of this is inspired from the Michael Hurtl most recommended Rails book 

1. Download and install RailsInsaller

2. Download and install Console 2

3. Download and install Sublime Text 2

4. Download and install Herkou Toolbelt

5. Open Console 2

6. Navigate through cd commands to a folder where you want your app folder to be created

7. Run rails new applicationname (will create the application directory with all rails default sub-directories and files)

8. Open gemfile with Sublime Text 2 and change as per your required gems. I found the gemfile used by Rails tutorial book is perfect to use in every application, then add gems when you need later. But make sure you:
  – remove rb-fsevent, growl, rb-inotify, libontify
  – add 

gem ‘rb-fchange’, ‘0.0.5’
gem ‘rb-notifu’, ‘0.0.4’
gem ‘win32console’, ‘1.3.0’

Google the pages of these gems to check their latest version and change the version number accordingly

9. Navigate with Console 2 to your newly created app folder and run bundle install

10. Run rails s

Congratulations you now have rails server running with some beautiful essential gems.

11. git init

12. git add .

13. git commit -m “Initial commit”

14. Create git account on github

15. git remote add origin https://github.com/%5Busernane%5D/%5Brepositaryname%5D.git

16. git push -u origin master

Congratulations you have just set up Git to work smoothly with your app.

17. Create a heroku account

18. Run heroku login on console 2

19. heroku create

20. git push heroku master

Congratulations you have hosted your app on Heroku.

The most recommended testing environment is rspec, and here is the best way to install it with the best supporting gems and options.

21. In console 2, run rails generate rspec:install

22. bundle exec guard init rspec (guard gem for autotesting)

23. change content of guardfile to the one used in the tutorial

24. bundle exec spork –bootstrap (spork gem for speeding up tests)

25. Change content of spec/spec_helper.rb to the one used in the tutorial

26. Change content of .rspec file to 

--colour
--drb

27. bundle exec guard init spork (to tell rails to use spork with guard)

28. add :cli => ‘–drb’ argument to guard ‘rspec’ line in guardfile

29. In sublime text 2 go to preference -> Package Control and select install package find  rubytest and have it installed.

30. preference -> Package Settings->RubyTest->Settings – User add bundle exec before any rspec you find

Congratulations you now have rspec testing framewrok installed with the best supporting gems to autotest, notify, and speed things up. You can also now run tests from Sublime Text 2 itself.

In thirty steps you now have everything ready for the best development environment on Windows for any serious application development.Image

How to get help while developing in Ruby on Rails?

Am sure I will need to search online help almost everyday in my first year developing RoR.

Here where am currently posting my questions:

stackoverflow: the best. make sure you tag your questions well. But I will let you know about the amount of responses I get. Am really not sure how is the RoR community on stackoverflow, but I have used for other coding questions, and I found it to have a great deal of experts, and used to get Drupal related answer within 48 hours.

ruby on rails talk on Google Mailing List

I have posted one question there. a few minutes ago. I have no experience using Google Groups. The interface looks like from the 10 year old Internet. Anyway I will be updating you about the Google Group RoR community.

If you are in The States, not my case. You can call the free  Rails Hotline.

There is also Rails Mentors, which relies on rails experts volunteers ready to help beginners.

There is also the Rails Forum , I have not tried it yet.

Working with Rails forum, I have not tried it yet, but does not look to be very active.

Also the reddit rails forum seems to be active

Facebook Groups:

Ruby on Rails: Almost 10,000 members by the time of writing this with excellent administrators, keeping spam at bay!

Ruby on Rails Learning and Fun : Another but much smaller group.

Onscreen Expert  (added Sep 2013)  where you can hire experts who would help you by remoting to your machine. It costs from 0$ per hour (offered by the site founders themselves) to $150. Click here for rails experts.

Will keep the list of support resources updated.

Recommended Tools for the Ruby on Rails developer

After reading lots of users feedback, and watching top RoR developers tutorials.

I created the below list, which shows the best choice of “tool/software/server/…”in every category

Putting in mind that am talking Windows, not MAC or Linux..

Rails Installer: which includes the latest of Ruby,Rails,Bundler.Git,Sqlite

Console 2 instead of the default very outdated Windows Command Prompt. Console 2 support multiple tabs for example.

Use POSTGRESQL as production database, when your app is live.
Heroku as a host
Git for versioning, it is also a part of the Rails Installer bundle, they got also a nice desktop vrsion, but am using the command prompt instead of the desktop version.
Sublime Text 2 for code editing

RubyMine is the IDE of choice, but I would suggest learning Ruby on Rails using the command prompt and Sublime Text 2, this is the way most developers work.

As for the front end.

JS (Coffescript)/HTML5/CSS3(SASS)

Bootstrap a collection of CSS and HTML convention, it will help you not worry much about the design of the front end.

Follow

Get every new post delivered to your Inbox.