Skip to main content

Database-enabled Hello World RoR app

Posted by arungupta on May 16, 2007 at 3:22 PM PDT

UPDATE: Simplified steps for
V2 are available
and for V3

Follow up from

In this post I show how a Rails app can talk to database. Here are the
steps I followed:

  1. Deploy a RoR application as WAR on GlassFish using

    these steps
  2. Modify the application such that "Hello World!" is read from the
    controller instead of defined in the view (this is natural to RoR
    programmers anyway!).
    1. Define a new variable in controller as '
      @hello_string = "Hello 
    2. Replace the string in view with '<%= @hello_string %>'.
  3. Download and install MySQL Community
    Server 5.0
    and MySQL
    Connector/J 5.0.5
  4. Create database using the command: '
    mysqladmin -u root create 
  5. Right select the NetBeans project, select 'Generate',
    select 'model', specify the arguments as 'table1',
    click 'OK'. This will generate, in NetBeans project, Database
    Migrations, migrate, 001_create_table1s.rb.
  6. Open 001_create_table1s.rb, change self.up helper method such that it looks like:
    def self.up
      create table :table1s do |t|
        t.column :data, :string
  7. Right-select NetBeans project, select 'Run Rake Target', 'db',
    'migrate'. This generates the appropriate database tables.
  8. In NetBeans Runtime tab, right click on 'Databases', '
    Connection ...
    1. In Name, select 'New Driver ...' and specify the location
      of mysql-connector-java-5.0.5-bin.jar from the MySQL
      Connector/J installation directory.
    2. In Database URL, give 'jdbc:mysql://localhost:3306/helloworld_development'.
    3. Expand the newly added database node, expand Tables, right-select 'table1s',
      select 'Execute Command ...'.
    4. Enter the following SQL "
      insert into table1s values (1, 'Hello 
      from database')
      ". Run the SQL.
  9. Change the controller such 'hello_string' is initialized
    from the database. This is a contrived example but still convey the concept.
    Anyway, The code looks like:

    @hello_string = Table1.find(1).data
  10. Start MySQL database by giving the following command:

    mysqld --console
  11. Save all the files and refresh the page in the browser. If your
    controller name is 'say' and view is 'hello', then
    the URL will be 'http://localhost:3000/say/hello'.
    The browser will now display 'Hello from database'.

In a later post, I'll describe how this same application can be deployed as
WAR in GlassFish V2.



Related Topics >>