文档中心 V3.0
Ruby

概述

Ruby On Rails是一个用于编写网络应用程序的软件包。它基于一种计算机软件语言Ruby,给程序开发人员提供了强大的框架支持。你可以用比以前少的多的代码和短的多的时间编写出一流的网络软件。

开发指南

下面为大家实战演示如何发布Ruby项目的demo。

使用示例

1.创建新的Ruby应用

Ruby-1.png
Ruby-2.png


2.进入刚刚创建的应用控制台

Ruby-3.png


3.在应用下创建并绑定mysql服务

Ruby-4.png
Ruby-5.png
Ruby-6.png


4.查看并管理您所创建的服务

Ruby-7.png


5.创建一个ruby on rails项目

创建ruby on rails项目

创建步骤如下:

hujie@a007:~/workspace2013_new$ rails new RailsTest
create
create README.rdoc
create Rakefile
create config.ru
create .gitignore
create Gemfile
create app
create app/assets/images/rails.png
create app/assets/javascripts/application.js
create app/assets/stylesheets/application.css
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create app/views/layouts/application.html.erb
create app/mailers/.gitkeep
create app/models/.gitkeep
create config
create config/routes.rb
create config/application.rb
create config/environment.rb
create config/environments
create config/environments/development.rb
create config/environments/production.rb
create config/environments/test.rb
create config/initializers
create config/initializers/backtrace_silencers.rb
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/initializers/secret_token.rb
create config/initializers/session_store.rb
create config/initializers/wrap_parameters.rb
create config/locales
create config/locales/en.yml
create config/boot.rb
create config/database.yml
create db
create db/seeds.rb
create doc
create doc/README_FOR_APP
create lib
create lib/tasks
create lib/tasks/.gitkeep
create lib/assets
create lib/assets/.gitkeep
create log
create log/.gitkeep
create public
create public/404.html
create public/422.html
create public/500.html
create public/favicon.ico
create public/index.html
create public/robots.txt
create script
create script/rails
create test/fixtures
create test/fixtures/.gitkeep
create test/functional
create test/functional/.gitkeep
create test/integration
create test/integration/.gitkeep
create test/unit
create test/unit/.gitkeep
create test/performance/browsing_test.rb
create test/test_helper.rb
create tmp/cache
create tmp/cache/assets
create vendor/assets/javascripts
create vendor/assets/javascripts/.gitkeep
create vendor/assets/stylesheets
create vendor/assets/stylesheets/.gitkeep
create vendor/plugins
create vendor/plugins/.gitkeep
run bundle install
Enter your password to install the bundled RubyGems to your system:
Fetching source index for https://rubygems.org/
Installing rake (10.1.0)
Using i18n (0.6.1)
Using multi_json (1.7.7)
Using activesupport (3.2.13)
Using builder (3.0.4)
Using activemodel (3.2.13)
Using erubis (2.7.0)
Using journey (1.0.4)
Using rack (1.4.5)
Using rack-cache (1.2)
Using rack-test (0.6.2)
Using hike (1.2.3)
Using tilt (1.4.1)
Using sprockets (2.2.2)
Using actionpack (3.2.13)
Using mime-types (1.23)
Using polyglot (0.3.3)
Using treetop (1.4.14)
Using mail (2.5.4)
Using actionmailer (3.2.13)
Using arel (3.0.2)
Using tzinfo (0.3.37)
Using activerecord (3.2.13)
Using activeresource (3.2.13)
Using bundler (1.0.15)
Installing coffee-script-source (1.6.3)
Using execjs (1.4.0)
Using coffee-script (2.2.0)
Using rack-ssl (1.3.3)
Using json (1.8.0)
Using rdoc (3.12.2)
Using thor (0.18.1)
Using railties (3.2.13)
Using coffee-rails (3.2.2)
Installing jquery-rails (3.0.4)
Using rails (3.2.13)
Using sass (3.2.9)
Using sass-rails (3.2.6)
Using sqlite3 (1.3.7)
Installing uglifier (2.1.2)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

然后修改"config"下面的"database.yml",<先用本地数据库实现,到时部署到www.mopaas.com上面的时候,重新配置数据源>
development:
adapter: mysql
encoding: utf8
reconnect: false
username: root
password: mysql
database: cloud
pool: 5
timeout: 5000
host: 192.168.1.12
test:
adapter: mysql
encoding: utf8
reconnect: false
username: root
password: mysql
database: cloud
pool: 5
timeout: 5000
host: 192.168.1.12
production:
adapter: mysql
encoding: utf8
reconnect: false
username: root
password: mysql
database: cloud
pool: 5
timeout: 5000
host : 192.168.1.12

然后修改“Gemfile”文件
source 'https://rubygems.org'
gem 'rails', '3.2.13'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'sqlite3'
gem 'mysql','2.8.1'
gem 'json'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
#gem 'thin'
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# To use Jbuilder templates for JSON
# gem 'jbuilder'
# Use unicorn as the app server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'ruby-debug'

配置完成以后,执行如下命令 rake db:migrate
rails gengrate scaffold user \
userName:string email:string passwd:string time:datetime sid:integer level:integer
这样子一个最简单的rails已经创建完成了

配置MySQL数据库(生产环境)

首先进入MoPaaS,创建一个Ruby应用,如下图:

Ruby-3.png


进入服务详情页面,通过“管理”Mysql,创建表并插入一些数据,如下图:

Ruby-7.png


Ruby-8.png


通过环境变量获取MySQL的信息,并修改"config"下面的database.yml

development:
adapter: mysql
encoding: utf8
reconnect: false
username: xxxx //USER的值
password: xxxx //PASSWORD的值
database: xxxx //NAME的值
pool: 5
timeout: 5000
host: xxx.xxx.xxx.xxx //HOST的值
test:
adapter: mysql
encoding: utf8
reconnect: false
username: xxxx //USER的值
password: xxxx //PASSWORD的值
database: xxxx //NAME的值
pool: 5
timeout: 5000
host: xxx.xxx.xxx.xxx //HOST的值
production:
adapter: mysql
encoding: utf8
reconnect: false
username: xxxx //USER的值
password: xxxx //PASSWORD的值
database: xxxx //NAME的值
pool: 5
timeout: 5000
host: xxxx.xxx.xxx.xxx //HOST的值

6.把代码包压缩成zip代码包,在网页上上传

Ruby-9.png


7.指定ruby版本在Gemfile文件内添加

 ruby '2.0.0', :engine => 'jruby', :engine_version => '1.7.25'

MySQL使用举例

var db_options = {
host: 'localhost', //此处的'localhost',请使用MoPaaS的环境变量"值",如MOPAAS_MYSQL891_HOST的值
port: 3306, //此处的'3306',请使用MoPaaS的环境变量"值",如MOPAAS_MYSQL891_PORT的值
user: 'root', //此处的'root',请使用MoPaaS的环境变量"值",如MOPAAS_MYSQL891_USER的值
password: 'admin', //此处的'admin',请使用MoPaaS的环境变量"值",如MOPAAS_MYSQL891_PASSWORD的值
database: 'test' //此处的'test',请使用MoPaaS的环境变量"值",如MOPAAS_MYSQL891_NAME的值
};
//加载mysql Module
var mysql = require('mysql'),client = null;
if(mysql.createClient) {
client = mysql.createClient(db_options);
} else {
client = new mysql.Client(db_options);
client.connect(function(err) {
if(err) {
console.error('connect db ' + client.host + ' error: ' + err);
process.exit();
}
}
);
}
client.query(
'INSERT INTO TestTable1 '+
'SET Name = ?, PhoneNum = ?',
['ceshi', '******']
);
client.query(
'SELECT * FROM TestTable1',
function selectCb(err, results, fields) {
if (err) {
throw err;
}
console.log(results);
// console.log(fields);
client.end();
});

扩展服务

目前支持的扩展服务包括:

  • Glusterfs(文件系统)用户和程序可以像访问本地文件一样访问远端系统上的文件
  • MySQL(数据库)提供分布式的关系型数据库服务
  • PostgreSQL(数据库)提供分布式的关系型数据库服务
  • Mongodb(数据库)提供高性能的非关系型数据库
  • Memcached(缓存服务)提供高性能的分布式内存对象缓存服务

注意事项

1、环境变量
如果给应用绑定了相关的服务,MoPaaS将会生成对应的环境变量,您可以在代码中使用获取环境变量的方法来代替手动写入环境配置。当然,您也可以通过自定义环境变量来设置环境变量。详情请见环境变量篇章。
2、权限相关
出于安全性考虑,上传到MoPaaS的代码不被允许进行write操作,因此,有安装过程的应用需要将配置文件(一般为数据库配置文件)通过Glusterfs服务存放到文件管理中心,有上传文件功能的应用需要把文件的存放路径指向为Glusterfs给定的路径。
3、上传代码包
当手动将应用工程压缩成zip压缩包时,请勿直接将工程根目录打包,正确的打包方式为进入工程根目录,选中根目录下所有文件及文件夹,打包成zip压缩包。
4、配置默认首页
用户应用工程如未显式配置默认首页路径,如Java Web应用没有在web.xml中配置welcome页面,平台将寻找应用工程根目录下的index.html或index.php等页面作为应用的默认首页,如在应用工程根目录下未找到相关页面,则直接访问应用url时可能出现“Not Found”错误信息,在该种情况下用户需要在浏览器地址栏种输入完整的路径才能访问相关页面,例:yourappname.butterfly.mopaasapp.com/admin/login.html (yourappname是您的应用名,admin是您打包文件夹的名称,login.html是您想要访问的文件名,请根据项目定义)