安装:
jruby -S gem install rails mongrel jdbc-mysql activerecord-jdbcmysql-adapter
这一步是安装几个必须 的gem包,gem包在java中类似于jar
mongrel 包是一个类似于tomcat的服务器
jdbc-mysql activerecord-jdbcmysql-adapter这几个是用于连接mysql数据库的适配器,有了它才能连接msyql数据库。
执行jruby -S gem list 这个命令用来查看装了哪些gem包
安装warbler gem工具,用来打包成war包
jruby -S gem install -y jruby-openssl warbler
是这样的:在rails工程的根目录运行
jruby -S warble config
jruby -S warble war
jruby -S warble pluginize
jruby -S warble war:aot
修改config/database.yml adapter: jdbcmysql adapter表示是数据库的连接适配器
创建rails工程
jruby -S rails myapp -d mysql 这一步是创建名为myapp的rails工程项目
进入所创建工程myapp目录
jruby -S script/generate scaffold post title:string content:string
jruby -S rake db:create:all
jruby -S rake db:migrate
jruby -S script/server
http://localhost:3000/posts
注:由于在jruby中,执行rake db:create:all本应该是创建三个环境的三个数据库的(myapp_development,myapp_test,myapp_production)
不过jruby中有个bug,它只创建了两个数据库,没有development这个数据库
所以你将config/database.yml文件中关于development那部分的数据库配置中的数据库名改为myapp_production,或自己手动创建一个myapp_development的数据库。
三个环境可以自由切换,jruby -S script/server -e production 这样就是以上线环境来启动的,那么它用的就是production配置中的数据库
关联:
has_many :一对多,
belongs_to:多对一
多对多的关系是对称的关系,两个连接的表都互相使用has_and_belongs_to_many来声明它们之间的关系。在数据库中,多对多关联是使用中间连接表来实现的。它包含一对外键连接两个目标表。Active Record假定这个连接表的名字是两个目标表名以字母顺序串联起来。连接表categories和表products,Active Record会去找一个名为categories_products的连接表。
创建连接表
jruby -S script/generate migration create_categories_products
# in migration
class CreateCategoriesProducts< ActiveRecord::Migration
def self.up
create_table :categories_products, :id => false do |t|
t.column :category_id, :integer
t.column :product_id, :integer
end
end
def self.down
end
end
# models/product.rb
has_and_belongs_to_many :categories
# models/category.rb
has_and_belongs_to_many :products
增加字段:
jruby -S script/generate migration add_category_id_to_articles
在文件中这样写
def self.up
add_column :articles, :article_category_id, :integer
end
还有要注意的就是用jruby on rails 开发程序的时候路径一定要使用rails的生成方式,否则就会出现路径问题!
备注:root_url是服务器地址,RAILS_ROOT常量获得的项目物理地址
TINYINT 就是MySql 中的 Boolean. 可以定义为 intyint(1)
MySql 5.0 以后就有 Boolean 类型了.