Hosting Ruby on Rails on GoDaddy - Solved!

Hello all,

I know how very challenging it can be to host a ROR application of
GoDaddy. The good news is that after 10 days of blood, sweat and
tears, I finally got it

to work!!!

First, let me start by saying that I’m somewhat of a newbie to Rails.
However, I’ve been programming in Java and/or C# for the last 10+
years so I’ve been

around the block a couple times when it comes to this stuff. Secondly,
this was undoubtedly one of the most challenging development tasks
I’ve undertaken

this year, so please don’t feel bad if you didn’t get it to work the
first 10 attempts because it took me waaaaay more than that!. Well,
with that said, I’m

sure you’re eager to get to the how-to so let’s do it.

Right now, I’d love to write a few paragraphs on how GoDaddy’s Ruby on
Rails support and documentation is abominal, but that would only be
preaching to the

choir… Instead, let’s make some lemonade :slight_smile:

One more thing, please forgive and typing/spelling errors, I’m writing
this in Notepad.

My Setup

Tip - On Vista and XP, if you uninstall a version of Ruby, restart
your computer before reinstalling another version of Ruby, otherwise
the Environment

Variables won’t get set properly.


Installing Rails

Ok, here is where I was REALLY confused early on, mostly because I
didn’t understand terminology (i.e. what is a RubyGem, what does
freeezing a Gem do). I

was also really confused by GoDaddy’s documentation. In some places,
they claim to support Rails 1.1.2, in others it’s 1.1.6. Anyway, to
correctly install

Rails for version 1.1.6:

  1. Run the Ruby185-22.exe installer.
  2. Open a command prompt and type: gem install rails --version 1.1.6

That’s it. [DO NOT download RubyGems 1.2.0 (or any other version) and
then run “ruby setup.rb”!!! Same goes for any other version of Rails,
don’t do it.]

To ensure you’ve setup everything correctly, let’s check the ROR
component’s versions:

C:\Development\Projects\Ruby>ruby -v
ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mswin32]

C:\Development\Projects\Ruby>gem -v
0.9.2

C:\Development\Projects\Ruby>rails -v
Rails 1.1.6


Installing Subversion

Go ahead and install Subversion if you already haven’t. It’s a version
control system like CVS or Visual Source Safe.


Creating a test project

– Let’s keep it simple and create helloworld

C:\Development\Projects\Ruby>rails helloworld

create
create app/controllers
create app/helpers

– Change to the helloworld directory

C:\Development\Projects\Ruby>cd helloworld

– Create a controller and some basic actions

C:\Development\Projects\Ruby\helloworld>ruby script\generate
controller Say hello

./script/…/config/boot.rb:28:Warning: require_gem is obsolete. Use
gem instead
.
exists app/controllers/
exists app/helpers/
create app/views/say
exists test/functional/
create app/controllers/say_controller.rb
create test/functional/say_controller_test.rb
create app/helpers/say_helper.rb
create app/views/say/hello.rhtml

– Ok, let see if it works

C:\Development\Projects\Ruby\helloworld>ruby script/server

./script/…/config/boot.rb:28:Warning: require_gem is obsolete. Use
gem instead
.
=> Booting WEBrick…
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2008-07-18 22:54:52] INFO WEBrick 1.3.1
[2008-07-18 22:54:52] INFO ruby 1.8.5 (2006-12-25) [i386-mswin32]
[2008-07-18 22:54:52] INFO WEBrick::HTTPServer#start: pid=3680
port=3000
127.0.0.1 - - [18/Jul/2008:22:55:11 Eastern Daylight Time] “GET / HTTP/
1.1” 200
7552

– Open a browser to: http://localhost:3000/Say/hello

Say#hello

Find me in app/views/say/hello.rhtml


Preparing for launch to GoDaddy

Ok, just to quickly recap, all we’ve done so far is to install ROR,
Subversion and create a very simple Rails app - nothing special.
Everything is working

locally, so now it’s time to prepare for FTPing to GoDaddy. This is
another area where I was REALLY confused initially. So before we go
any further I’m going

to outline and explain what we’re going to do and why.

  1. Freeze the application. When you “freeze” a Rails app, your
    application will always use that version of Rails and the associated
    Ruby Gems, regardless of

what version is installed on the GoDaddy server. In essence, even
though GoDaddy only supports version 1.1.6, by ‘freezing’ your
application, you literally

bundle your entire local environment into your application. So
theoretically, you can run version 2.x.x if you ‘freeze’ your
application before deploying.

Note, I have not tried this as of yet, but I do have a ‘frozen’
version of Rails 1.2.6 running on GoDaddy. So if 1.2.6 runs, then it’s
very likely 2.x.x will

run as well as long as it’s frozen.

  1. Make a copy of the helloworld application and rename it
    hellworld_godaddy.
    This is a best practice for me because it allows me to have a working
    version of my app running on Vista and a ‘ready to promote’ version
    for the Linux

server.

  1. Configure some files in the /public and /config directory for use
    on GoDaddy.

EASY as 1-2-3…

Ok, go ahead and stop the WEBrick server by typing Ctrl C

First, let’s Freeze our application to version 1.1.6
C:\Development\Projects\Ruby\helloworld>rake rails:freeze:edge
TAG=rel_1-1-6
[**** Note: this may take 30+ seconds ****]

Second, copy of the helloworld application and rename it
hellworld_godaddy

Finally, we need to edit some files in our hellworld_godaddy
directory.

→ /config/environment.rb
Edit the top section of /config/environment.rb to look like this:

ENV[‘RAILS_ENV’] ||= ‘development’

Specifies gem version of Rails to use when vendor/rails is not

present
ENV[‘GEM_HOME’] = ‘/usr/local/lib/ruby/gems-dev/1.8’
RAILS_GEM_VERSION = ‘1.1.6’

→ /public/dispatch.rb, dispatch.cgi, and dispatch.fcgi
Edit the first line in all of the dispatch files to look like this:

#!/usr/local/bin/ruby

→ /public/.htaccess

Ok, a brief pause is needed here to explain some things. .htaccess
files are generally used for many reasons, but it’s common in shared
hosting for these

files to be used to redirect to a subdirectory preventing users from
knowing the real location of your application on a server. GoDaddy
uses a 'Symbolic Link

name’ which is really just an ‘alias’. So in our case we’re going to
create a subdirectory called ‘helloworld_godaddy’ and a Symbolic Link
name of

‘helloworld’.
So all this means is that when a user goes to
mywebsite.com is available for purchase - Sedo.com,
they’re actually referencing the data and files from the
helloworld_godaddy

subdirectory. The most important thing to know about this file is that
it should contain a ‘RewriteBase’ directive which explicitly sets the
base URL for

per-directory rewrites. So in our case we want the base URL to be
rewritten as ‘helloworld’. Another useful tip is to use the .fcgi
(FastCGI) protocol; this

is done by simply changing the .cgi extensions to .fcgi.

Edit the middle section of the .fcgi file to look like this:

RewriteBase /helloworld
RewriteRule ^$ index.html [QSA]

RewriteRule ^([^.]+)$ $1.html [QSA]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

Ok, now we’re almost there! The last part is the easiest :slight_smile:


Lock and Load

Log into your GoDaddy account and open up the CGI Admin tool.

In the ‘Directory name:’ textbox, type my_rails_apps. GoDaddy will
automatically create an .htaccess file in the new directory. Open the
file and change
dispatch.cgi to dispatch.fcgi. [Note: This step is not necessary]

Open up FileZilla and connect to your GoDaddy root directory. Double
click the my_rails_apps directory.

In the Filezilla toolbar, select Edit → Settings → FileTypes and
change the Default transfer type to ASCII.

Select your helloworld_godaddy directory, right click and select
upload. *** IMPORTANT STEP ***

[Note: this process will take about 2-3 minutes]

(If you’re new to the GoDaddy admin tool, you’ll need to create an FTP
user by going to Hosting Control Center → Settings → Manage FTP
settings)
(To figure out your FTP URL, username and password, go to Hosting
Control Center → Content → FTP Client → Click Disconnect, then
Connect)
(Make sure you turn on your error logs, go to Hosting Control Center –

Settings → Error Logs → click the ‘Update’ button)

Ok, now go back to the CGI Admin tool and select the ‘Ruby’ tag or
refresh the page.

In the Create Rails Symbolic Link section, click the Show Rails
‘Applications link’.

If all went well, you should see ‘my_rails_apps/helloworld_godaddy’ in
the ‘Choose a rails app:’ drop down box.

Enter a link name of ‘hellworld’ (no quotes), then click the ‘Create’
button.

[Link created: helloworld is a symbolic link to my_rails_apps/
helloworld_godaddy]


LIFT OFF!!

The very last step is setting permissions.

Reconnect to your root directory via Filezilla and open up the /
my_rails_apps/helloworld_godaddy/public directory.

Select the dispatch.cgi and dispatch.fcgi file, right click and select
‘file attributes’. Change the numeric value 644 to 755 and click the
‘Ok’ button.

– Open a browser to: http://www.mysite.com/hellworld/say/hello [ALL
LOWERCASE]

Say#hello

Find me in app/views/say/hello.rhtml


CONGRATULATIONS! You’ve done it.

For reference, I’ve uploaded a copy of the helloworld_godaddy
directory to:

In case these instructions don’t work for you, here are some
instructions that helped me along my journey:

http://blog.mcmoyer.com/2007/9/14/running-rails-on-godaddy-a-k-a-how-do-you-keep-a-geek-entertained
http://www.ruby-forum.com/topic/104823
http://www.ruby-forum.com/topic/133394

http://www.rousette.org.uk/projects/forums/viewthread/13/#487
http://lists.rubyonrails.org/pipermail/rails/2006-July/056959.html

Hope this helps.

Bill Screen

Thanks for your detailed step installing rails!!!
After following your instruction and installing 1.1.6 rails application
I tried installing also 2.*applications but it wasn’t so easy. There was
an error for a gem method not recognized on godaddy server and I
discovered that the problem can be resolved replacing gem calls with the
oldest require_gem call. After replacing all these method in
vendor/rails files I successfully installed my rails 2.0.5 application
on GoDaddy.
I wrote a page with all the steps at
http://rubyonrails.matteotomasini.com/deployment
I hope it will be useful for someone…
Thanks again
Matteo

Hi sir I followed your post.I got a running RoR on godaddy without a
database>My problem when I try to add a simple query on the database my
page only display a blank page.I really don’t what happening.

deluxe hosting linux
development machine
win xp
rails 1.1.6
ruby 1.8.6
gem 0.9.4
mysql 5

database.yml
development:
adapter: mysql
database: secondtry_db
host: secondtry_db.db.3769687.hostedresource.com
port: 3306
username: secondtry_db
password: ********

production:
adapter: mysql
database: secondtry_db
host: secondtry_db.db.3769687.hostedresource.com
port: 3306
username: secondtry_db
password: *******
contoller
@users = User.find(:all)
app/new.rhtml
Welcome to User Registration

Lastname
Firstname

When I remove the query on new.rhtml
I view the simple message ” Welcome to User Registration and the Time”

Migrate database
def self.up
create_table :users do |t|
t.column :lastname, :string
t.column :firstname, :string
end
end
Thank you in advance…

Johny ben wrote:

Hi sir I followed your post.I got a running RoR on godaddy without a
database>My problem when I try to add a simple query on the database my
page only display a blank page.I really don’t what happening.

deluxe hosting linux
development machine
win xp
rails 1.1.6
ruby 1.8.6
gem 0.9.4
mysql 5

database.yml
development:
adapter: mysql
database: secondtry_db
host: secondtry_db.db.3769687.hostedresource.com
port: 3306
username: secondtry_db
password: ********

production:
adapter: mysql
database: secondtry_db
host: secondtry_db.db.3769687.hostedresource.com
port: 3306
username: secondtry_db
password: *******
contoller
@users = User.find(:all)
app/new.rhtml
Welcome to User Registration
<%= Time.now %>

<% for user in @users %>

<% end %>
Lastname Firstname
<%=h user.lastname %> <%=h user.firstname %>

When I remove the query on new.rhtml
I view the simple message ” Welcome to User Registration and the Time”

Migrate database
def self.up
create_table :users do |t|
t.column :lastname, :string
t.column :firstname, :string
end
end
Thank you in advance…
on Error Log
/web/cgi-bin/php5: Symbol client_errors' has different size in shared object, consider re-linking /web/cgi-bin/php5: Symbolclient_errors’ has different size in shared
object, consider re-linking

after one week of trial n error on deploying a very simple RoR
application on godaddy I finally made a success.
here my test page
http://catalystcreativemedia.com/webpage/

Hi, I want to launch a rails application on godaddy. I purchased a
domain and a hosting plan. I really could not understand from where and
how to start to deploy rails application .

Can anyone please tell how to proceed.

thank you
aashish

Johny ben wrote:

after one week of trial n error on deploying a very simple RoR
application on godaddy I finally made a success.
here my test page
http://catalystcreativemedia.com/webpage/

I got an simple app like helloworld to work on GoDaddy. But when I try
for using an RoR app with database connection ( almost similar to what i
see in the above link), i am spinning wheels without any progress. Do
you have any insight on what fixed the issue, Appreciate any help.

Aashish K. wrote:

Hi, I want to launch a rails application on godaddy. I purchased a
domain and a hosting plan. I really could not understand from where and
how to start to deploy rails application .

Can anyone please tell how to proceed.

GoDaddy supports Rails officially, so talk to their tech support. If
that doesn’t work, then get your money back and use a different host.
I’ve never heard anything good about GoDaddy’s Rails support.

BTW, a warning: don’t ever use GoDaddy’s e-mail hosting. Their spam
filter is overactive and misconfigured, and can’t be turned off. This
results in rejection of lots of legitimate mail.

thank you
aashish

Best,
–Â
Marnen Laibow-Koser
http://www.marnen.org
[email protected]

Sent from my iPhone

Aashish K. wrote:

Hi, I want to launch a rails application on godaddy. I purchased a
domain and a hosting plan. I really could not understand from where and
how to start to deploy rails application .

Can anyone please tell how to proceed.

thank you
aashish

I think this article can help you solve your issues …

http://www.bigbluebrains.com/index.php/2010/08/04/how-to-host-a-ruby-application-on-godaddy/

Thanks
Hamaky

Step by step deploy a Ruby application on GoDaddy
http://wanghaiyang.me/archives/166