1. prerequesite
2. 安裝rails
C:\>jruby -S gem install rails -V
查看安裝的rails版本:
C:\>jruby -S rails -v
Rails 4.0.0
3. 新建一個rails Apps
C:\>jruby -S rails new demo
並且取消bundle install,因爲使用默認安裝的ActiveRecord-JDBC-adapter的master分支版本目前,會導致執行rake db:migrate命令時發生wrong number of arguments calling exec_insert (5 for 3) error錯誤,所以,修改gemfile使用它的1.3.0.beta2版本(這個步驟是現在的權宜之計,以後肯定不必這麼麻煩了。後注:此問題目前已修復):
gem 'activerecord-jdbcsqlite3-adapter'
改爲:
gem 'activerecord-jdbcsqlite3-adapter', '1.3.0.beta2'
如果使用的mysql數據庫,則將:
gem 'activerecord-jdbcmysql-adapter'
改爲:
gem 'activerecord-jdbcmysql-adapter','1.3.0.beta2'
development:
adapter: mysql
encoding: utf8
reconnect: false
database: demo_development
username: user
password: user_password
host: localhost
port: 3306
C:\DEMO>jruby -S rails s
然而此時又出錯了:
OpenSSL::Cipher::CipherError: Illegal key size: possibly you need to install Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files for your JRE
4. 配置java類路徑
require 'java'
$CLASSPATH << File.join(Rails.root, 'lib','java')
這樣,如果在該目錄下有一個編譯好的java類example.MyClass在rails中就可以像這樣使用該類:
mc=Java::example.MyClass.new
如果還使用了外部jar,則還要添加引用jar的代碼,同樣在environment.rb文件中添加:
Dir.glob(File.join(Rails.root, 'lib','java',"**","*.jar")).each do |jar|
$CLASSPATH << jar
end
所以最終environment.rb文件看起來是這樣的: