というわけで、もたもたしている間にRails2.0(.2)が出てしまった。せっかくなので、これから先はRails2.0を勉強していきたい。
相変わらずJRubyを使う予定だけど、JRubyの方も1.0.3がリリースされているので、こちらも同じくアップデートしておく。ちなみに、古いRailsは1.0.3では動作しなくなったみたい。
JRuby: 1.0.3 addresses compatibility issues, 1.1 performance update
インストール方法はJRuby1.0.2+Rails1.2の時と変わらず、「gem install rails」でOK。
以降、JRuby で Ruby on Railsと同じ手順で進めながらbookmarkアプリを作ってみる。
SQLiteのインストールと動作確認
適当に検索してみたところ、SQLiteは別途インストールが必要で、Windows用のSQLiteはdllとして提供されている模様。さらに、sqlite.exeなるコマンドラインツールからDB操作できるようだ。
[Rails] RailsでSQLite♪
SQLite + ActiveRecordを試す
Imitation with Ruby on Rails
ということで、SQLiteの公式サイトから「sqlitedll-3_5_4.zip」と「sqlite-3_5_4.zip」をダウンロードして、展開。まずはデータベースエンジンである(はずの)sqlite3.dllを「C:\WINDOWS\system32」にコピーする。これで、少なくともオンメモリのDBとしては動作するようになったはず。
ただし、これだけではデータベースの操作ができない。データベースを操作するためには、sqlite3.exeを使う。とりあえずは、試しにsqlite3.exeを実行してみる。
bookmarkアプリ用データベース&テーブル作成
動作確認が(たぶん)できたところで、bookmark用のデータベースを作成する。bookmarkアプリのDBの定義は、config\database.ymlにあるので、確認しておく。
という感じで、bookmarkテーブルの作成完了を確認。あとは、MySQLの時と同じようにやれば動作するはずだ。
モデル/コントローラの作成
まずはモデルを作る。
続いてコントローラ。
にアクセスしてみると…
なんと、エラー・・・。ActionControllerにscaffoldメソッドがなくなったのか??と思ったが、よく見るとこれはItemControllerのindexメソッド(?)で起きているらしい。scaffoldがなくても勝手に動くようになってる…?試しにscaffoldを削除すると、今度は違うエラーが。
以前までのエントリで、RubyプログラムやRailsの開発方法についてならJRubyとRubyでほぼ違いがないことがわかった。Rails2.0でデフォルトDBがSQLite3になったことに加え、AirやGoogle Gearsでの採用などSQLiteへの注目が高まっている。なので、多少趣旨を変更することになるかもしれないが、ここから先はJRuby+MySQLではなくRuby+SQLite3で進めていきたい。
追記:
このエントリでのRailsの動作のさせ方は、2.0での正式なやり方ではありません。詳しくは、以下の関連リンクのRails2.0のscaffoldは前とだいぶ違うらしいとかRails2.0でブックマークアプリとか見てください。
関連リンク
Rails2.0のscaffoldは前とだいぶ違うらしい
Migration
Rails2.0でブックマークアプリ
Rails2.0の変更点
Action Pack: Resources
Action Pack: Multiview
Action Pack: Record identification
相変わらずJRubyを使う予定だけど、JRubyの方も1.0.3がリリースされているので、こちらも同じくアップデートしておく。ちなみに、古いRailsは1.0.3では動作しなくなったみたい。
JRuby: 1.0.3 addresses compatibility issues, 1.1 performance update
インストール方法はJRuby1.0.2+Rails1.2の時と変わらず、「gem install rails」でOK。
以降、JRuby で Ruby on Railsと同じ手順で進めながらbookmarkアプリを作ってみる。
C:\Projects\OtherProjects\Rails>jruby %RUBY_HOME%\bin\rails bookmar
create
create  app/controllers
create  app/helpers
create  app/models
create  app/views/layouts
create  config/environments
create  config/initializers
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/mocks/development
create  test/mocks/test
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  config/database.yml
create  config/routes.rb
create  public/.htaccess
create  config/initializers/inflections.rb
create  config/initializers/mime_types.rb
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/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
SQLiteのインストールと動作確認
適当に検索してみたところ、SQLiteは別途インストールが必要で、Windows用のSQLiteはdllとして提供されている模様。さらに、sqlite.exeなるコマンドラインツールからDB操作できるようだ。
[Rails] RailsでSQLite♪
SQLite + ActiveRecordを試す
Imitation with Ruby on Rails
ということで、SQLiteの公式サイトから「sqlitedll-3_5_4.zip」と「sqlite-3_5_4.zip」をダウンロードして、展開。まずはデータベースエンジンである(はずの)sqlite3.dllを「C:\WINDOWS\system32」にコピーする。これで、少なくともオンメモリのDBとしては動作するようになったはず。
ただし、これだけではデータベースの操作ができない。データベースを操作するためには、sqlite3.exeを使う。とりあえずは、試しにsqlite3.exeを実行してみる。
SQLite version 3.5.4
Enter ".help" for instructions
sqlite> .database
seq  name             file
---  ---------------  ----------------------------------------------------------
0    main
sqlite>
bookmarkアプリ用データベース&テーブル作成
動作確認が(たぶん)できたところで、bookmark用のデータベースを作成する。bookmarkアプリのDBの定義は、config\database.ymlにあるので、確認しておく。
# SQLite version 3.x
#   gem install sqlite3-ruby (not necessary on OS X Leopard)
development:
adapter: sqlite3
database: db/development.sqlite3
timeout: 5000
C:\Projects\OtherProjects\Rails\bookmark\db>sqlite3 development.sqlite3
SQLite version 3.5.4
Enter ".help" for instructions
sqlite> create table items(
...> id integer primary key,
...> url varchar(255),
...> title varchar(255),
...> description text
...> );
sqlite> insert into items(url,title,description)values('http://www.google.co.jp'
,'Google','Mos popular web search engine');
sqlite> select * from items;
1|http://www.google.co.jp|Google|Mos popular web search engine
sqlite> .exit
という感じで、bookmarkテーブルの作成完了を確認。あとは、MySQLの時と同じようにやれば動作するはずだ。
モデル/コントローラの作成
まずはモデルを作る。
C:\Projects\OtherProjects\Rails>cd bookmark
C:\Projects\OtherProjects\Rails\bookmark>jruby script\generate model item
   exists  app/models/
   exists  test/unit/
   exists  test/fixtures/
   create  app/models/item.rb
   create  test/unit/item_test.rb
   create  test/fixtures/items.yml
   create  db/migrate
   create  db/migrate/001_create_items.rb
続いてコントローラ。
C:\Projects\OtherProjects\Rails\bookmark>jruby script\generate controller item
   exists  app/controllers/
   exists  app/helpers/
   create  app/views/item
   exists  test/functional/
   create  app/controllers/item_controller.rb
   create  test/functional/item_controller_test.rb
   create  app/helpers/item_helper.rb
C:\Projects\OtherProjects\Rails\bookmark>jruby script\server
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2007-12-22 16:37:22] INFO  WEBrick 1.3.1
[2007-12-22 16:37:22] INFO  ruby 1.8.5 (2007-12-15) [java]
[2007-12-22 16:37:23] INFO  WEBrick::HTTPServer#start: pid=1102920 port=3000
http://localhost:3000/itemにアクセスしてみると…
undefined method `scaffold' for ItemController:Classなんと、エラー・・・。ActionControllerにscaffoldメソッドがなくなったのか??と思ったが、よく見るとこれはItemControllerのindexメソッド(?)で起きているらしい。scaffoldがなくても勝手に動くようになってる…?試しにscaffoldを削除すると、今度は違うエラーが。
MissingSourceFile in ItemController#index
no such file to load -- sqlite3どうやら、database.ymlのsqlite3用アダプタがないから起きているらしい。sqlite3用アダプタをGemでインストールすれば解決か?
C:\Projects\OtherProjects\Rails\bookmark>gem install sqlite3-ruby
Select which gem to install for your platform (java)
1. sqlite3-ruby 1.2.1 (mswin32)
2. sqlite3-ruby 1.2.1 (ruby)
3. sqlite3-ruby 1.2.0 (mswin32)
4. sqlite3-ruby 1.2.0 (ruby)
5. sqlite3-ruby 1.1.0 (mswin32)
6. sqlite3-ruby 1.1.0 (ruby)
7. sqlite3-ruby 1.0.1 (mswin32)
8. sqlite3-ruby 1.0.1 (ruby)
9. Skip this gem
10. Cancel installation
> 1
Successfully installed sqlite3-ruby-1.2.1-mswin32
Installing ri documentation for sqlite3-ruby-1.2.1-mswin32...
Installing RDoc documentation for sqlite3-ruby-1.2.1-mswin32...
SyntaxError in ItemController#index
C:/ProgramFiles/Java/JRuby/jruby-1.0.3/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.1-mswin32/lib/sqlite3_api.so:0: Invalid char `\220' in expressionどうも、動かないらしい。実行環境をRubyに変更すると動くようになったため、JRubyの問題のようだが、いまいちよくわからない。原因究明については、別途エントリでやる予定。
以前までのエントリで、RubyプログラムやRailsの開発方法についてならJRubyとRubyでほぼ違いがないことがわかった。Rails2.0でデフォルトDBがSQLite3になったことに加え、AirやGoogle Gearsでの採用などSQLiteへの注目が高まっている。なので、多少趣旨を変更することになるかもしれないが、ここから先はJRuby+MySQLではなくRuby+SQLite3で進めていきたい。
追記:
このエントリでのRailsの動作のさせ方は、2.0での正式なやり方ではありません。詳しくは、以下の関連リンクのRails2.0のscaffoldは前とだいぶ違うらしいとかRails2.0でブックマークアプリとか見てください。
関連リンク
Rails2.0のscaffoldは前とだいぶ違うらしい
Migration
Rails2.0でブックマークアプリ
Rails2.0の変更点
Action Pack: Resources
Action Pack: Multiview
Action Pack: Record identification
コメント