バリケンのRuby日記 RSSフィード

2009-04-18

[][] WindowsJRubyの最新ソースコードを入手してビルドするまでの長い道のり  WindowsでJRubyの最新ソースコードを入手してビルドするまでの長い道のり - バリケンのRuby日記 を含むブックマーク はてなブックマーク -  WindowsでJRubyの最新ソースコードを入手してビルドするまでの長い道のり - バリケンのRuby日記  WindowsでJRubyの最新ソースコードを入手してビルドするまでの長い道のり - バリケンのRuby日記 のブックマークコメント

WindowsJRubyの最新ソースコードを入手してビルドするまでにやったことを、とりあえずメモとして書いておくよ。あとでちゃんとまとめるかも。

$ cd /c
$ git clone git://kenai.com/jruby~main jruby
  • JRubyのビルド
    • コマンドプロンプトを起動して、PATHを通してから、JRubyのビルドを実行するよ
    • 次のようにコマンドを入力するよ
> set JAVA_HOME=C:\PROGRA~1\Java\jdk1.6.0_13
> set M2_HOME=C:\PROGRA~1\APACHE~1\apache-maven-2.1.0
> set PATH=%JAVA_HOME%\bin;%M2_HOME%\bin;C:\PROGRA~1\APACHE~1\apache-ant-1.7.1\bin;%PATH%
> cd c:\jruby
> mvn

これで、JRubyの最新版がビルドできているはずだよ。

> set JRUBY_HOME=C:\jruby
> set PATH=%JRUBY_HOME%\bin;%PATH%
> jruby -v
jruby 1.3.0 (ruby 1.8.6p287) (2009-04-19 r6586) (Java HotSpot(TM) Client VM 1.6.0_13) [x86-java]

>
トラックバック - http://rubyist.g.hatena.ne.jp/muscovyduck/20090418

2009-04-08

[][] Google App EngineJavaが使えるように!  Google App EngineでJavaが使えるように! - バリケンのRuby日記 を含むブックマーク はてなブックマーク -  Google App EngineでJavaが使えるように! - バリケンのRuby日記  Google App EngineでJavaが使えるように! - バリケンのRuby日記 のブックマークコメント

米グーグルの「Google App Engine」、Javaアプリケーションが利用可能に

Javaが使えるようになった、ということはJRubyも使えるのかな?

追記:動くみたい!

追記2:もう和訳が!仕事早い!

トラックバック - http://rubyist.g.hatena.ne.jp/muscovyduck/20090408

2009-02-05

[][] Warblerでwarファイルを作る  Warblerでwarファイルを作る - バリケンのRuby日記 を含むブックマーク はてなブックマーク -  Warblerでwarファイルを作る - バリケンのRuby日記  Warblerでwarファイルを作る - バリケンのRuby日記 のブックマークコメント

じゃあ、このあいだの日記でインストールしたWarblerを使って、このあいだ作ったWebアプリをwarファイルにしてみよう!

まずはwarファイルにしたいRailsプロジェクトのディレクトリに移動するよ。

D:\>cd rails

D:\rails>cd cookbook

D:\rails\cookbook>

つぎに、Warblerのconfigファイルを作成するよ。「warble config」と入力してね。

D:\rails\cookbook>warble config
cp D:/jruby-1.1.6/lib/ruby/gems/1.8/gems/warbler-0.9.12/generators/warble/templa
tes/warble.rb config/warble.rb

D:\rails\cookbook>

できあがったconfig/warble.rbを適当なテキストエディタ(メモ帳だと改行コードをうまく解釈できないみたいだから、メモ帳以外のテキストエディタを使ってね)で編集してね。具体的には、このあいだインストールしたactiverecord-jdbcsqlite3-adapterjruby-opensslを指定するよ。

  # Gems to be included. You need to tell Warbler which gems your application needs
  # so that they can be packaged in the war file.
  # The Rails gems are included by default unless the vendor/rails directory is present.
  config.gems += ["activerecord-jdbcsqlite3-adapter", "jruby-openssl"]
  # config.gems << "tzinfo"

あとは「warble war」と入力すれば、必要なファイルを集めてwarファイルを作ってくれるよ。

D:\rails\cookbook>warble war
mkdir -p tmp/war/WEB-INF/gems/specifications
cp D:/jruby-1.1.6/lib/ruby/gems/1.8/specifications/rails-2.2.2.gemspec tmp/war/W
EB-INF/gems/specifications/rails-2.2.2.gemspec
mkdir -p tmp/war/WEB-INF/gems/gems
cp D:/jruby-1.1.6/lib/ruby/gems/1.8/specifications/rake-0.8.3.gemspec tmp/war/WE
B-INF/gems/specifications/rake-0.8.3.gemspec
cp D:/jruby-1.1.6/lib/ruby/gems/1.8/specifications/activesupport-2.2.2.gemspec t
mp/war/WEB-INF/gems/specifications/activesupport-2.2.2.gemspec
cp D:/jruby-1.1.6/lib/ruby/gems/1.8/specifications/activerecord-2.2.2.gemspec tm
p/war/WEB-INF/gems/specifications/activerecord-2.2.2.gemspec
cp D:/jruby-1.1.6/lib/ruby/gems/1.8/specifications/actionpack-2.2.2.gemspec tmp/
war/WEB-INF/gems/specifications/actionpack-2.2.2.gemspec
cp D:/jruby-1.1.6/lib/ruby/gems/1.8/specifications/actionmailer-2.2.2.gemspec tm
p/war/WEB-INF/gems/specifications/actionmailer-2.2.2.gemspec
cp D:/jruby-1.1.6/lib/ruby/gems/1.8/specifications/activeresource-2.2.2.gemspec
tmp/war/WEB-INF/gems/specifications/activeresource-2.2.2.gemspec
cp D:/jruby-1.1.6/lib/ruby/gems/1.8/specifications/activerecord-jdbcsqlite3-adap
ter-0.9.gemspec tmp/war/WEB-INF/gems/specifications/activerecord-jdbcsqlite3-ada
pter-0.9.gemspec
cp D:/jruby-1.1.6/lib/ruby/gems/1.8/specifications/activerecord-jdbc-adapter-0.9
.gemspec tmp/war/WEB-INF/gems/specifications/activerecord-jdbc-adapter-0.9.gemsp
ec
cp D:/jruby-1.1.6/lib/ruby/gems/1.8/specifications/jdbc-sqlite3-3.5.8.gemspec tm
p/war/WEB-INF/gems/specifications/jdbc-sqlite3-3.5.8.gemspec
cp D:/jruby-1.1.6/lib/ruby/gems/1.8/specifications/jruby-openssl-0.3.gemspec tmp
/war/WEB-INF/gems/specifications/jruby-openssl-0.3.gemspec
mkdir -p tmp/war/WEB-INF/app
mkdir -p tmp/war/WEB-INF/config
mkdir -p tmp/war/WEB-INF/lib
mkdir -p tmp/war/WEB-INF/log
mkdir -p tmp/war/WEB-INF/vendor
mkdir -p tmp/war/WEB-INF/tmp
mkdir -p tmp/war/WEB-INF/app/controllers
mkdir -p tmp/war/WEB-INF/app/helpers
mkdir -p tmp/war/WEB-INF/app/models
mkdir -p tmp/war/WEB-INF/app/views
cp app/controllers/application.rb tmp/war/WEB-INF/app/controllers/application.rb

cp app/controllers/recipes_controller.rb tmp/war/WEB-INF/app/controllers/recipes
_controller.rb
cp app/helpers/application_helper.rb tmp/war/WEB-INF/app/helpers/application_hel
per.rb
cp app/helpers/recipes_helper.rb tmp/war/WEB-INF/app/helpers/recipes_helper.rb
cp app/models/recipe.rb tmp/war/WEB-INF/app/models/recipe.rb
mkdir -p tmp/war/WEB-INF/app/views/layouts
mkdir -p tmp/war/WEB-INF/app/views/recipes
cp app/views/layouts/recipes.html.erb tmp/war/WEB-INF/app/views/layouts/recipes.
html.erb
cp app/views/recipes/edit.html.erb tmp/war/WEB-INF/app/views/recipes/edit.html.e
rb
cp app/views/recipes/index.html.erb tmp/war/WEB-INF/app/views/recipes/index.html
.erb
cp app/views/recipes/new.html.erb tmp/war/WEB-INF/app/views/recipes/new.html.erb

cp app/views/recipes/show.html.erb tmp/war/WEB-INF/app/views/recipes/show.html.e
rb
cp config/boot.rb tmp/war/WEB-INF/config/boot.rb
cp config/database.yml tmp/war/WEB-INF/config/database.yml
cp config/environment.rb tmp/war/WEB-INF/config/environment.rb
mkdir -p tmp/war/WEB-INF/config/environments
mkdir -p tmp/war/WEB-INF/config/initializers
mkdir -p tmp/war/WEB-INF/config/locales
cp config/routes.rb tmp/war/WEB-INF/config/routes.rb
cp config/warble.rb tmp/war/WEB-INF/config/warble.rb
cp config/environments/development.rb tmp/war/WEB-INF/config/environments/develo
pment.rb
cp config/environments/production.rb tmp/war/WEB-INF/config/environments/product
ion.rb
cp config/environments/test.rb tmp/war/WEB-INF/config/environments/test.rb
cp config/initializers/inflections.rb tmp/war/WEB-INF/config/initializers/inflec
tions.rb
cp config/initializers/mime_types.rb tmp/war/WEB-INF/config/initializers/mime_ty
pes.rb
cp config/initializers/new_rails_defaults.rb tmp/war/WEB-INF/config/initializers
/new_rails_defaults.rb
cp config/locales/en.yml tmp/war/WEB-INF/config/locales/en.yml
mkdir -p tmp/war/WEB-INF/lib/tasks
mkdir -p tmp/war/WEB-INF/vendor/plugins
mkdir -p tmp/war/WEB-INF/tmp/cache
mkdir -p tmp/war/WEB-INF/tmp/pids
mkdir -p tmp/war/WEB-INF/tmp/sessions
mkdir -p tmp/war/WEB-INF/tmp/sockets
cp D:/jruby-1.1.6/lib/ruby/gems/1.8/gems/warbler-0.9.12/lib/jruby-complete-1.1.6
.jar tmp/war/WEB-INF/lib/jruby-complete-1.1.6.jar
cp D:/jruby-1.1.6/lib/ruby/gems/1.8/gems/warbler-0.9.12/lib/jruby-complete-1.1.6
.jar tmp/war/WEB-INF/lib/jruby-complete-1.1.6.jar
cp D:/jruby-1.1.6/lib/ruby/gems/1.8/gems/warbler-0.9.12/lib/jruby-rack-0.9.3.jar
 tmp/war/WEB-INF/lib/jruby-rack-0.9.3.jar
cp D:/jruby-1.1.6/lib/ruby/gems/1.8/gems/warbler-0.9.12/lib/jruby-rack-0.9.3.jar
 tmp/war/WEB-INF/lib/jruby-rack-0.9.3.jar
cp public/404.html tmp/war/404.html
cp public/422.html tmp/war/422.html
cp public/500.html tmp/war/500.html
cp public/dispatch.cgi tmp/war/dispatch.cgi
cp public/dispatch.fcgi tmp/war/dispatch.fcgi
cp public/dispatch.rb tmp/war/dispatch.rb
cp public/favicon.ico tmp/war/favicon.ico
mkdir -p tmp/war/images
cp public/index.html tmp/war/index.html
mkdir -p tmp/war/javascripts
cp public/robots.txt tmp/war/robots.txt
mkdir -p tmp/war/stylesheets
cp public/images/rails.png tmp/war/images/rails.png
cp public/javascripts/application.js tmp/war/javascripts/application.js
cp public/javascripts/controls.js tmp/war/javascripts/controls.js
cp public/javascripts/dragdrop.js tmp/war/javascripts/dragdrop.js
cp public/javascripts/effects.js tmp/war/javascripts/effects.js
cp public/javascripts/prototype.js tmp/war/javascripts/prototype.js
cp public/stylesheets/scaffold.css tmp/war/stylesheets/scaffold.css
mkdir -p tmp/war/WEB-INF

D:\rails\cookbook>

プロジェクトのディレクトリに「cookbook.war」というファイルができているはずだよ。

トラックバック - http://rubyist.g.hatena.ne.jp/muscovyduck/20090205

2009-02-02

[][] Warbler  Warbler - バリケンのRuby日記 を含むブックマーク はてなブックマーク -  Warbler - バリケンのRuby日記  Warbler - バリケンのRuby日記 のブックマークコメント

昨日の日記で簡単なRuby on Railsアプリを作ったけど、こうしたRailsアプリをインターネット上に公開するには、アプリケーションサーバにデプロイする必要があるよ。

Ruby on Railsのアプリケーションサーバとして利用されるソフトウェアとしては、MongrelPassengerが有名だよね。

それ以外の選択肢として、Warblerを利用してRailsアプリをwarファイルに変換して、TomcatなどのJavaのアプリケーションサーバで動かす方法があるみたいだよ。

Warblerのインストールは、「gem install warbler」でいいみたい。

D:\>gem install warbler
Successfully installed warbler-0.9.12
1 gem installed
Installing ri documentation for warbler-0.9.12...
Installing RDoc documentation for warbler-0.9.12...

D:\>

使い方はこちらのサイトで紹介されているみたいだから、参考にしてみてね。

トラックバック - http://rubyist.g.hatena.ne.jp/muscovyduck/20090202

2009-02-01

[][] JRubyRuby on Rails  JRubyでRuby on Rails - バリケンのRuby日記 を含むブックマーク はてなブックマーク -  JRubyでRuby on Rails - バリケンのRuby日記  JRubyでRuby on Rails - バリケンのRuby日記 のブックマークコメント

昨日の日記でせっかくRuby on Railsをセットアップしたから、チュートリアルを参考に簡単なWebアプリ(クックブック)を作ってみるよ。

D:\Users\muscovyduck>cd \

D:\>mkdir rails

D:\>cd rails

D:\rails>rails cookbook
      create
      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

D:\rails>cd cookbook

ここで、config/database.ymlを適当なテキストエディタ(メモ帳だと改行コードをうまく解釈できないみたいだから、メモ帳以外のテキストエディタを使ってね)で編集してね。具体的には「adapter: sqlite3」となっているところ(3ヶ所)を「adapter: jdbcsqlite3」に変更してね。以下のような内容になるよ。

# SQLite version 3.x
#   gem install sqlite3-ruby (not necessary on OS X Leopard)
development:
  adapter: jdbcsqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: jdbcsqlite3
  database: db/test.sqlite3
  pool: 5
  timeout: 5000

production:
  adapter: jdbcsqlite3
  database: db/production.sqlite3
  pool: 5
  timeout: 5000

じゃあ、続けるよ。

D:\rails\cookbook>jruby script/generate scaffold Recipe title:string chef:string
 instructions:text
      exists  app/models/
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/recipes
      exists  app/views/layouts/
      exists  test/functional/
      exists  test/unit/
      exists  public/stylesheets/
      create  app/views/recipes/index.html.erb
      create  app/views/recipes/show.html.erb
      create  app/views/recipes/new.html.erb
      create  app/views/recipes/edit.html.erb
      create  app/views/layouts/recipes.html.erb
      create  public/stylesheets/scaffold.css
      create  app/controllers/recipes_controller.rb
      create  test/functional/recipes_controller_test.rb
      create  app/helpers/recipes_helper.rb
       route  map.resources :recipes
  dependency  model
      exists    app/models/
      exists    test/unit/
      exists    test/fixtures/
      create    app/models/recipe.rb
      create    test/unit/recipe_test.rb
      create    test/fixtures/recipes.yml
      create    db/migrate
      create    db/migrate/20090131143104_create_recipes.rb

D:\rails\cookbook>rake db:migrate
(in D:/rails/cookbook)
==  CreateRecipes: migrating ==================================================
-- create_table(:recipes)
   -> 0.3493s
   -> 0 rows
==  CreateRecipes: migrated (0.3670s) =========================================

D:\rails\cookbook> jruby 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-01-31 23:36:51] INFO  WEBrick 1.3.1
[2009-01-31 23:36:51] INFO  ruby 1.8.6 (2008-12-17) [java]
[2009-01-31 23:36:51] INFO  WEBrick::HTTPServer#start: pid=2452 port=3000

チュートリアルルのとおり、Webブラウザでhttp://127.0.0.1:3000/recipes/newにアクセスして、レシピを追加してみてね。

まだじっくりと使い込んだわけじゃないけど、JRubyでもとりあえずRuby on Railsが動くんだねえ。

トラックバック - http://rubyist.g.hatena.ne.jp/muscovyduck/20090201