`
chengj
  • 浏览: 18066 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

Jruby On Rails 的安装及部署实践

阅读更多
    最近安装了Jruby On Rails,发现网上虽然有很多资料可以参考,但是由于各种组件的不断更新,很多资料已经过时,容易产生误导,在这里介绍一下我个人的安装经过,供大家参考.
    首先是安装环境,不同的软件版本可能导致不同的安装结果.我使用的环境是:
JDK------------------1.6.0_06
TOMCAT--------------6.0.16
MYSQL---------------5.0.22
JRUBY---------------1,1
RAILS----------------2.0.2
WARBLER------------0.9.5
    接下来开始安装,JDK,TOMCAT,MYSQL的安装就不说了,别忘了配置JAVA_HOME环境变量.
接下来解压JRUBY,将JRUBY_HOME指向解压后的文件路径,CLASSPATH指向该路径的LIB.接下来转到JRUBY的BIN路径下,开始以下的安装;
1,安装RAILS,运行:
  jruby gem install rails -r -y --no-ri --no-rdoc
目前的版本是2.0.2.
2,安装Rails框架的数据库接口和MYSQL适配器,运行:
  jruby gem install activerecord-jdbc-adapter -r -y --no-ri --no-rdoc
  jruby gem install activerecord-jdbcmysql-adapter -r -y --no-ri --no-rdoc
这里要说明一下,有些资料说要安装ActiveRecord-JDBC,其实ActiveRecord-JDBC和activerecord-jdbc-adapter是同一种东西,只是名字换了,版本不同,ActiveRecord-JDBC的版本是0.5,activerecord-jdbc-adapter现在是0.8.另外因为安装了activerecord-jdbcmysql-adapter,所以java语言MySQL数据库接口软件包就不用下载安装了.
以上的模块安装完毕就可以创建一个RAILS工程了,例如:jruby -S rails demo
随后修改config/database.yml,像是这样:
  adapter: jdbcmysql
  hostname: localhost
  database: test
  username: root
  password:
这里再补充一点,有的资料说要修改config/environment.rb,要添加
if RUBY_PLATFORM =~ /java/
    require 'rubygems'
    RAILS_CONNECTION_ADAPTERS = %w(jdbc)
end
其实这项修改是针对RAILS2.0以前的版本的,现在的2.0.2已经不用改了.这一点在activerecord-jdbc-adapter的文档有说明.
    以上设置完毕就可以启动WEBrick运行RAILS程序了.下面再说说RAILS程序如何部署到TOMCAT中.Goldspike已经稍显陈旧了,现在我们可以使用更好的warbler.在JRUBY的BIN路径下运行:
  jruby gem install warbler -r -y --no-ri --no-rdoc
这样warbler就安装好了,接下来如果在RAILS工程下打包,是可以生成.war文件的,但是放在TOMCAT下跑会有问题,原因是因为warbler没有把数据库连接的内容打到包里去.其实这也不是warbler的BUG,warbler无法知道用户连接何种数据库以及用什么方式连接,所以你需要自己配一下,修改jruby-1.1\lib\ruby\gems\1.8\gems\warbler-0.9.5\generators\warble\templates\warble.rb文件,在以下的位置:
  # config.gems = ["activerecord-jdbc-adapter", "jruby-openssl"]
  # config.gems << "tzinfo"
  # config.gems["rails"] = "1.2.3"
添加:
  %w{jdbc-mysql activerecord-jdbcmysql-adapter activerecord-jdbc-adapter}.each{|g| config.gems << g}
注意,上面的warble.rb其实并不是warbler打包的配置文件,它是一个生成配置文件的模板文件,要生成配置文件须要到RAILS工程路径下运行:
  jruby -S warble config
这时你在工程路径下config文件夹会找到一个warble.rb,这才是warbler打包的配置文件.上面的添加内容你也可以不在模板文件中添加,而是直接在这里添加.这一步完成后就可以打包了,运行:
  jruby -S warble war
把.war文件拷贝到TOMCAT的webapps下就可以运行了,但是会看到以下错误:
Rails Error: No :secret given to the #protect_from_forgery call. Set that or use a session store capable of generating its own keys (Cookie Session Store)
解决的对策是编辑该工程的web.xml文件,添加以下内容
  <context-param>
    <param-name>jruby.session_store</param-name>
    <param-value>db</param-value>
  </context-param>
以上的修改也可以在模板文件jruby-1.1\lib\ruby\gems\1.8\gems\warbler-0.9.5\web.xml.erb中进行,这样就不用每次都要修改工程的web.xml文件了.现在一切正常了.
6
0
分享到:
评论
4 楼 Xsen 2009-06-11  
正好用上了,谢谢。

我是用Netbeans6.7开发的,执行Rake任务里的war任务之前仍然需要执行 jruby -S warble config,然后添加%w{jdbc-mysql activerecord-jdbcmysql-adapter activerecord-jdbc-adapter}.each{|g| config.gems << g};

你说的Rails Error: No :secret given to the #protect_from_forgery call.没有遇到了;

war包是可以在Tomcat里运行了,但并没有生成java类文件,我还以为。。。
3 楼 supercode 2008-05-27  
今天把jruby部署到tomcat上跑了一下,居然成功了
2 楼 meiwenti 2008-05-24  
www.sw69.cn
1 楼 pig345 2008-04-21  
谢谢,JRuby+Rails不知道用起来怎么样。

相关推荐

    JRuby on Rails Web 2.0 Projects

    - **敏捷开发实践**:通过具体案例展示如何利用JRuby on Rails进行敏捷开发,包括TDD(测试驱动开发)、持续集成等最佳实践。 - **高性能部署策略**:讨论如何针对高流量网站优化JRuby on Rails应用的性能,包括缓存...

    Code Review&JRuby on Rails

    5. **部署策略**:介绍使用JRuby部署Rails应用的最佳实践,可能涉及PaaS服务如Heroku,或者自建服务器如JRuby + Passenger。 6. **案例研究**:可能包含一些实际项目中使用JRuby on Rails的成功案例,以展示其在...

    jruby_on_rails

    3. **部署灵活性**:JRuby on Rails 应用可以轻松地部署到任何支持 Java 的服务器上,如 Tomcat、Jetty 或者是大型企业级应用服务器,如 WebLogic 和 WebSphere。 4. **热部署**:JVM 的热部署特性允许开发者在不...

    JRuby和Rails-让Ruby语言融入于Java项目.rar

    5. **部署策略**:介绍如何在生产环境中部署JRuby和Rails应用,包括使用Tomcat、Jetty等Java应用服务器,以及与持续集成工具如Jenkins的集成。 6. **案例研究**:提供实际的项目案例,展示如何在Java企业级环境中...

    heroku-jruby-rails-4

    标题 "heroku-jruby-rails-4" 指向的是一个专为在 Heroku 平台上部署基于 JRuby 和 Rails 4 框架的应用程序而设计的种子项目。这个项目提供了一种快速启动和运行的方法,帮助开发者能够轻松地在 Heroku 上配置和部署...

    org.jruby.rar

    JRuby 不仅实现了 Ruby 标准库,还支持 Ruby on Rails 框架,使得 Java 开发者能够利用 Ruby 的生产力特性。 2. JRuby 优势:JRuby 提供了与 Java 平台的深度集成,可以访问所有 Java 类库,同时还能利用 JVM 的多...

    rails magazine issue 4

    综上所述,Rails Magazine Issue 4不仅涵盖了Ruby on Rails框架本身的技术细节和发展趋势,还涉及到了与Ruby on Rails相关的多个领域,如内容管理系统、数据库操作、跨平台开发等,为读者提供了全面而深入的技术洞察...

    终于知道怎么把rails Web程序打包成可执行文件了

    在Ruby on Rails开发的世界里,将Web应用程序打包成可执行文件是一个常见的需求,尤其是在需要部署到没有Ruby环境的服务器或者希望提供用户一个独立运行的软件时。标题中的“终于知道怎么把rails Web程序打包成可...

    jruby-core-1.7.12.zip

    3. JRuby 支持使用 JRuby-Rack 运行 Rails 应用,可以在 Java 应用服务器上部署 Ruby on Rails 项目。 4. JRuby 还可以作为 Java 代码调用 Ruby 代码的桥梁,通过 JRuby API 实现 Java 和 Ruby 之间的互操作。 关于...

    Rails相关电子书汇总二

    标题 "Rails相关电子书汇总二" 提供的信息表明,这个压缩包主要包含与Ruby on Rails框架相关的电子书籍资源。Ruby on Rails(简称Rails)是一种基于Ruby语言的开源Web开发框架,它遵循MVC(模型-视图-控制器)架构...

    NetBeans 6.0 安装和配置Ruby Support

    - 可选地,你可以勾选`JRuby and Rails Distribution`以安装JRuby和Ruby on Rails框架。 - `Ruby Experimental Hints`提供额外的源代码提示,可以根据需要选择。 - 安装过程包括点击`Install`,接受许可协议,...

    rails22新添功能.pdf

    此外,Rails 2.2还增强了与JRuby的兼容性,这有助于提高在Java平台上的部署灵活性。 ##### 文档完善 长期以来,Ruby on Rails因缺乏足够的文档而受到了批评。在Rails 2.2中,开发团队投入了大量的精力来改善这一...

    rubyrails生态系统

    14. **部署策略:** 提供部署 Rails 应用的最佳实践建议。 15. **托管服务:** 介绍不同的应用和代码托管方案。 16. **技术工具:** 展示支持 Rails 开发的技术栈和辅助工具。 17. **开发者工具:** 推荐提高开发...

    UsingJRubyFreePdfBook-英文原版.zip

    这有助于开发者构建混合式开发环境,充分利用Ruby on Rails的开发效率和Java的部署稳定性。 本书还涵盖了测试和持续集成的主题,讲解了如何使用RSpec、Cucumber等测试工具以及Jenkins等CI/CD工具,确保JRuby项目的...

    rails-asyncweb-开源

    开源的特性使得它成为开发者社区中的一个重要组成部分,为 Ruby on Rails 应用提供了更多选择和灵活性。对于那些寻求在 JVM 上运行高性能 Rails 应用的开发者来说,Rails-Asyncweb 是一个值得考虑的优秀解决方案。

    JavaOne 2008 JavaOne 2008 JavaOne 2008

    此外,通过将Ruby on Rails部署到JRuby上,开发人员可以利用Java平台的强大性能优势来支持高流量的Web应用程序。 ### 开源与开放标准 Sun在2007年将Java标准版的源代码开放给了开源社区,并且在2008年进一步推动了...

    开源技术讲座Sun 济南地区开源大使田贯升

    GlassFish还集成了一系列先进技术,如Grizzly's Comet、jRuby on Rails和Metro等,同时提供友好的更新中心和控制界面。 ### GlassFish的企业级功能 对于企业用户,GlassFish提供了全面的功能,包括高性能的Web服务...

    jrubyconf-2015:JRubyConf.EU 2015谈话材料

    Ruby以其简洁、易读的语法和强大的元编程能力而闻名,被广泛用于Web开发,特别是与Ruby on Rails框架一起使用。JRuby的出现使得Ruby能够无缝地融入Java生态系统,促进了跨平台开发和企业级应用的可能性。 【压缩...

Global site tag (gtag.js) - Google Analytics