分享-拨开浮云见神马-云计算PaaS平台实战

一 13th, 2012

这是今天部门内部分享的PPT

Slideshare有些失真,ppt下载地址:PPT下载

首先介绍云计算概念PaaS+SaaS+IaaS。
然后以Cloud Foundry为PaaS代表。
使用Sinatra编写一个连接MySql查询CSDN用户信息的小应用,并部署到Cloud Foundry上。

本来想详细演示下这些功能

  1. 简单的hello world应用
  2. 连接mysql查询CSDN用户信息
  3. 给应用进行集群
  4. 演示应用的热部署。

后来由于网速等的不给力,走马观花过了一遍。

cloud foundry 官网:http://cloudfoundry.com
cloud foundry 源码:https://github.com/cloudfoundry

源码基本同http://rubyer.me/blog/1234,只是修改的访问数据库的代码。

#hello.rb
require 'active_record'
require 'sinatra'
require 'json'

services = JSON.parse(ENV['VCAP_SERVICES'])
mysql_key = services.keys.select { |svc| svc =~ /mysql/i }.first
mysql = services[mysql_key].first['credentials']
#d7c8cf2bdb43179768bbc47e01636a这个是数据库名,没有找到相应的环境变量,所以写死了。
mysql_conf = {database: 'd7c8cf2bdb43179768bbc47e01636a', :host => mysql['hostname'], :port => mysql['port'],
:username => mysql['user'], :password => mysql['password'], adapter: "mysql2", encode: "utf8"}

ActiveRecord::Base.establish_connection(mysql_conf)

class Csdn < ActiveRecord::Base
end

# get "/"接收对根目录的get请求
get "/" do
  #可以接收请求中的参数
  @key = params[:key]
  #如果参数来为空,说明是查询请求
  if @key.present?
    @csdns = Csdn.where("email like ? or username like ?", "%"+@key+ "%", "%"+ @key+"%" )
  end

  #Sinatra可以渲染erb模板
  erb :index
end

views/index.html.erb源码


  Your missing hack tool

Your missing hack tool(CSDN)</pre>
<form action="/" method="get">search for:
 <input type="text" name="key" value="<%= @key if @key %>" />
 <input type="submit" value="submit" /></form>
<pre>
</pre>
<div id="result">
<h3>Csdn results: ()</h3>
<table>
<tbody>
<tr>
<td>name</td>
<td>email</td>
<td>pwd</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<h1>
</h1>
<pre>
>>原创文章,欢迎转载。转载请注明:转载自Ruby迷,谢谢!
>>原文链接地址:分享-拨开浮云见神马-云计算PaaS平台实战
  1. shapherd
    二 2nd, 201210:18

    哈哈, ppt的名字起的不错

  2. PikachuEXE
    一 14th, 201209:05

    我的app在vmc每次都启动不到…搞甚麼= =”

    • 老宋
      一 14th, 201209:24

      一般是因为cloudfoundry缺少一些包导致的,
      可以vmc logs 查看原因

Cancel reply