Showing posts with label ruby on rails. Show all posts
Showing posts with label ruby on rails. Show all posts

Monday, February 16, 2009

how to setup your ffp

ffp takes you out from your desk with FriendFeed.



source: http://github.com/nahi/ffp/tree/master



In case of CentOS5.2 default installation, rubygems is not availabe.

So, installation starts at rubygem, but it requires rdoc... anyway, let's go further.

Setup framework



install rdoc

    # yum install rdoc

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 ruby-rdoc               i386       1.8.5-5.el5_2.6  updates           136 k
Updating:
 ruby                    i386       1.8.5-5.el5_2.6  updates           280 k
 ruby-libs               i386       1.8.5-5.el5_2.6  updates           1.6 M
Installing for dependencies:
 ruby-irb                i386       1.8.5-5.el5_2.6  updates            69 k
Updating for dependencies:
 ruby-devel              i386       1.8.5-5.el5_2.6  updates           555 k







install gem

    # wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz
    # tar zxf rubygems-1.3.1.tgz
    # cd rubygems-1.3.1
    # ruby setup.rb





install rails



    # gem install rails



Successfully installed rake-0.8.3

Successfully installed activesupport-2.2.2

Successfully installed activerecord-2.2.2

Successfully installed actionpack-2.2.2

Successfully installed actionmailer-2.2.2

Successfully installed activeresource-2.2.2

Successfully installed rails-2.2.2

7 gems installed

Installing ri documentation for rake-0.8.3...

Installing ri documentation for activesupport-2.2.2...

Installing ri documentation for activerecord-2.2.2...

Installing ri documentation for actionpack-2.2.2...

Installing ri documentation for actionmailer-2.2.2...

Installing ri documentation for activeresource-2.2.2...

Installing RDoc documentation for rake-0.8.3...

Installing RDoc documentation for activesupport-2.2.2...

Installing RDoc documentation for activerecord-2.2.2...

Installing RDoc documentation for actionpack-2.2.2...

Installing RDoc documentation for actionmailer-2.2.2...

Installing RDoc documentation for activeresource-2.2.2...



test rails



$ mkdir ffp
$ rails /home/ocao/ffp
      exists
      create  app/controllers
      create  app/helpers
      create  app/models
      create  app/views/layouts
      create  config/environments
      create  config/initializers
      create  config/locales
      create  db
      create  doc
      create  lib
      create  lib/tasks
      create  log
      create  public/images
      create  public/javascripts
      create  public/stylesheets
      create  script/performance
      create  script/process
      create  test/fixtures
      create  test/functional
      create  test/integration
      create  test/performance
      create  test/unit
      create  vendor
      create  vendor/plugins
      create  tmp/sessions
      create  tmp/sockets
      create  tmp/cache
      create  tmp/pids
      create  Rakefile
      create  README
      create  app/controllers/application.rb
      create  app/helpers/application_helper.rb
      create  test/test_helper.rb
      create  test/performance/browsing_test.rb
      create  config/database.yml
      create  config/routes.rb
      create  config/initializers/inflections.rb
      create  config/initializers/mime_types.rb
      create  config/initializers/new_rails_defaults.rb
      create  config/locales/en.yml
      create  config/boot.rb
      create  config/environment.rb
      create  config/environments/production.rb
      create  config/environments/development.rb
      create  config/environments/test.rb
      create  script/about
      create  script/console
      create  script/dbconsole
      create  script/destroy
      create  script/generate
      create  script/performance/benchmarker
      create  script/performance/profiler
      create  script/performance/request
      create  script/process/reaper
      create  script/process/spawner
      create  script/process/inspector
      create  script/runner
      create  script/server
      create  script/plugin
      create  public/dispatch.rb
      create  public/dispatch.cgi
      create  public/dispatch.fcgi
      create  public/404.html
      create  public/422.html
      create  public/500.html
      create  public/index.html
      create  public/favicon.ico
      create  public/robots.txt
      create  public/images/rails.png
      create  public/javascripts/prototype.js
      create  public/javascripts/effects.js
      create  public/javascripts/dragdrop.js
      create  public/javascripts/controls.js
      create  public/javascripts/application.js
      create  doc/README_FOR_APP
      create  log/server.log
      create  log/production.log
      create  log/development.log
      create  log/test.log



Penetrate your firewall (port 3000 default)

in case of CentOS, iptables setup changed



# iptables -A INPUT -p tcp --dport 3000 -j ACCEPT


(if required) reverse proxy server setup

If you feel port 3000 specific-URL is ugly, you can setup httpd (apache) to reverse-proxy as below.



    ProxyPass /ffp/     http://yourserver:3000/

    ProxyPassReverse /ffp/      http://yourserver:3000/





kick start server(Webrick)



$ cd ffp

$ script/server

=> Booting WEBrick...

=> Rails 2.2.2 application started on http://0.0.0.0:3000

=> Ctrl-C to shutdown server; call with --help for options

[2009-02-16 09:30:40] INFO  WEBrick 1.3.1

[2009-02-16 09:30:40] INFO  ruby 1.8.5 (2006-08-25) [i386-linux]

[2009-02-16 09:30:40] INFO  WEBrick::HTTPServer#start: pid=16622 port=3000

192.168.0.51 - - [16/Feb/2009:09:30:48 JST] "GET / HTTP/1.0" 200 7385

- -> /

192.168.0.51 - - [16/Feb/2009:09:33:45 JST] "GET / HTTP/1.1" 200 7385

- -> /

192.168.0.51 - - [16/Feb/2009:09:33:45 JST] "GET /javascripts/prototype.js HTTP/1.1" 200 129738

http://b137053.ppp.asahi-net.or.jp/ffp/ -> /javascripts/prototype.js

192.168.0.51 - - [16/Feb/2009:09:33:46 JST] "GET /javascripts/effects.js HTTP/1.1" 200 38675

http://b137053.ppp.asahi-net.or.jp/ffp/ -> /javascripts/effects.js

192.168.0.51 - - [16/Feb/2009:09:33:46 JST] "GET /images/rails.png HTTP/1.1" 200 6646

http://b137053.ppp.asahi-net.or.jp/ffp/ -> /images/rails.png

192.168.0.51 - - [16/Feb/2009:09:34:02 JST] "GET /rails/info/properties HTTP/1.1" 500 13415

http://b137053.ppp.asahi-net.or.jp/ffp/ -> /rails/info/properties




Welcome ABORT!!!

you'll see the message below.



MissingSourceFile

in Rails/infoController#properties



here is the framework trace.

/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'

/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'

/usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:153:in `require'

/usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:521:in `new_constants_in'

(snip!)
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'

/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'

script/server:3





Thus,





no such file to load -- sqlite3

This error occurred while loading the following files:

sqlite3



but, we need SWIG before sqlite3.

The reason why SWIG is required, see http://www.machu.jp/diary/20070117.html



install SWIG



download from http://www.swig.org/download.html



# tar zxf swig-1.3.38.tar.gz

# cd swig-1.3.38

# ./configure && make && make install



install sqlite

# gem install sqlite3-ruby

Building native extensions.  This could take a while...

Successfully installed sqlite3-ruby-1.2.4

1 gem installed

Installing ri documentation for sqlite3-ruby-1.2.4...

Installing RDoc documentation for sqlite3-ruby-1.2.4...



Now your Environment seems OK

About your application’s environment


Ruby version1.8.5 (i386-linux)
RubyGems version1.3.1
Rails version2.2.2
Active Record version2.2.2
Action Pack version2.2.2
Active Resource version2.2.2
Action Mailer version2.2.2
Active Support version2.2.2
Application root/home/yourname/ffp
Environmentdevelopment
Database adaptersqlite3
Database schema version0


Setup f2p



download github code


$ cd working_directory

$ git clone git://github.com/nahi/f2p.git



initial boot to confirm setup



$ script/server

=> Booting WEBrick...

Missing these required gems:

  httpclient

  json



You're running:

  ruby 1.8.5 at /usr/bin/ruby

  rubygems 1.3.1 at /home/ocao/.gem/ruby/1.8, /usr/lib/ruby/gems/1.8



Run `rake gems:install` to install the missing gems.



install missing gems

oh, boy! where is httpclient?



$ rake gems:install

(in /home/username/f2p)

** Invoke gems:install (first_time)

** Invoke gems:base (first_time)

** Execute gems:base

** Invoke environment (first_time)

** Execute environment

rake aborted!

no such file to load -- httpclient





after all, I need to install following 2 packages (httpclient, json)

get httpclient



at http://dev.ctor.org/http-access2



# wget http://dev.ctor.org/download/httpclient-2.1.4.tar.gz

# tar zxf httpclient-2.1.4.tar.gz

# cd httpclient-2.1.4

# ruby install.rb



but, still rake is making noise on "json"

rake gems:install

(in /home/username/f2p)

rake aborted!

no such file to load -- json



(See full trace by running task with --trace)





get json

its simple.



# gem install json



Kick off again

it seems ok,



$ script/server

=> Booting WEBrick...

=> Rails 2.2.2 application started on http://0.0.0.0:3000

=> Ctrl-C to shutdown server; call with --help for options

[2009-02-16 10:53:05] INFO  WEBrick 1.3.1

[2009-02-16 10:53:05] INFO  ruby 1.8.5 (2006-08-25) [i386-linux]

[2009-02-16 10:53:05] INFO  WEBrick::HTTPServer#start: pid=25199 port=3000

192.168.0.51 - - [16/Feb/2009:10:53:15 JST] "GET / HTTP/1.1" 302 110

- -> /

192.168.0.51 - - [16/Feb/2009:10:53:16 JST] "GET /login HTTP/1.1" 200 863

- -> /login

192.168.0.51 - - [16/Feb/2009:10:54:02 JST] "POST /login/authenticate HTTP/1.1" 500 13753

http://b137053.ppp.asahi-net.or.jp/f2p/login -> /login/authenticate



but I came across login-failure




messages are below.



ActiveRecord::StatementInvalid

in LoginController#authenticate


Could not find table 'users'


/usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/connection_adapters/sqlite3_adapter.rb:29:in `table_structure'

/usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/core_ext/object/misc.rb:39:in `returning'

/usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/connection_adapters/sqlite3_adapter.rb:28:in `table_structure'

/usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/connection_adapters/sqlite_adapter.rb:189:in `columns'

/usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/base.rb:1220:in `columns'

/usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/base.rb:2839:in `attributes_from_column_definition_without_lock'

/usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/locking/optimistic.rb:55:in `attributes_from_column_definition'

/usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/base.rb:2279:in `initialize'

app/models/user.rb:62:in `initialize'

app/controllers/login_controller.rb:26:in `new'

app/controllers/login_controller.rb:26:in `authenticate'




/usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/connection_adapters/sqlite3_adapter.rb:29:in `table_structure'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/core_ext/object/misc.rb:39:in `returning'
(snip!)

/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
script/server:3

Request


Parameters:

{"name"=>"user",

"commit"=>"login",

"authenticity_token"=>"xxxxxx",

"remote_key"=>"xxxxxxx"}



--- 
:csrf_id: 9xxxxxxxxxxbf
flash: !map:ActionController::Flash::FlashHash {}




Response


Headers:

{"cookie"=>[],

"Content-Type"=>"",

"Cache-Control"=>"no-cache"}


migrate db for public_environment?



reference: http://d.hatena.ne.jp/ky2009/20081226/1230278255



$ rake RAILS_ENV=production db:migrate

(in /home/ocao/f2p)

==  CreateUsers: migrating ====================================================

-- create_table(:users)

   -> 0.0057s

==  CreateUsers: migrated (0.0062s) ===========================================



==  CreateProfiles: migrating =================================================

-- create_table(:profiles)

   -> 0.0056s

==  CreateProfiles: migrated (0.0060s) ========================================



==  AddUserToProfile: migrating ===============================================

-- add_column(:profiles, :user_id, :integer)

   -> 0.0104s

==  AddUserToProfile: migrated (0.0108s) ======================================



==  InsertProfileOfUser: migrating ============================================

==  InsertProfileOfUser: migrated (0.0010s) ===================================



==  AddEntriesInThreadToProfile: migrating ====================================

-- add_column(:profiles, :entries_in_thread, :integer)

   -> 0.0097s

==  AddEntriesInThreadToProfile: migrated (0.0113s) ===========================



==  CreateLastModifieds: migrating ============================================

-- create_table(:last_modifieds)

   -> 0.0058s

==  CreateLastModifieds: migrated (0.0062s) ===================================



==  CreateCheckedModifieds: migrating =========================================

-- create_table(:checked_modifieds)

   -> 0.0057s

==  CreateCheckedModifieds: migrated (0.0061s) ================================







but, still I have the same error. maybe I'm using development environment, right?



$$ ls -l db

total 36

-rw-r--r-- 1 ocao ocao     0 Feb 16 10:49 development.sqlite3 <<< nothing!!!!

drwxrwxr-x 2 ocao ocao  4096 Feb 16 06:33 migrate

-rw-r--r-- 1 ocao ocao 10240 Feb 16 11:01 production.sqlite3

-rw-rw-r-- 1 ocao ocao  1696 Feb 16 11:01 schema.rb

$ cd ..

$ rake RAILS_ENV=development db:migrate



BINGO!!! now the application starts correctly.