ruby 配置 及 简单示例

1. 安装 ruby 1.8.6
下载 ruby-1.8.6.tar.gz 解压
./configure make make install
2. 安装 yum install openssl-devel
然后到 我的 ruby 安装包目录理(rootsrc) 去生成makefile make ,make install
执行 cd rootsrc/ext/openssl;
ruby extconf.rb --with-openssl-include=/usr/include/openssl/ --with-openssl-lib=/home/autotest/new_bak/ruby-1.8.7-p72/ext/openssl/lib
3.安装 rubygems
下载 rubygems-1.3.5.tgz 解压
执行 ruby ruby setup.rb
4. 安装 rails
gem install rails
或: gem install -v=2.1.1 rails 指定版本


openssl 另一个解决方案:
http://www.openssl.org/
下载:openssl-0.9.8k.tar.gz
安装 make make install

到ruby源文件文件夹的/ext/openssl文件夹下
ruby extconf.rb --with-openssl-include=/usr/local/ssl/include/ --with-openssl-lib=/usr/local/ssl/lib
make && make install


• 切换数据库
ruby安装目录\lib\ruby\gems\1.8\gems\rails-2.0.2\lib\rails_generator\generators\applications\app\app_generator.rb
default_options :db => (ENV["RAILS_DEFAULT_DATABASE"] || "sqlite3")
换成 default_options :db => (ENV["RAILS_DEFAULT_DATABASE"] || "mysql")

编辑好以后,重新生成rails工程,然后在database.yml文件就会看到基于mysql的配置信息,按照你机器上的mysql信息相应的填写即可。

写一个我自己的配制

Ruby代码

1. development:
2. adapter: mysql
3. encoding: utf8
4. database: rails (在数据库中创建相应的database)
5. username: root
6. password:
7. host: localhost


*创建表
1.ruby script\generate migration create_docs_store
2.编辑:db/migrate/001_create_docs_store.rb
class CreateDocsStore < ActiveRecord::Migration
def self.up
create_table :documents do |t|
t.column :name, :string, :null => false
t.column :size, :integer, :null => false
t.column :content_type, :string, :null => false
t.column :data, :binary, :limit => 2.megabytes
end
end
def self.down
drop_table :documents
end
end
3.rake db:migrate
next:
a. ruby script/generate migration add_docs_attributes
b. class AddDocsAttributes < ActiveRecord::Migration
def self.up
add_column :documents, :created_at, :timestamp
add_column :documents, :updated_at, :timestamp
add_column :documents, :platform, :string, :limit => 10
end
def self.down
remove_column :documents, :created_at
remove_column :documents, :updated_at
remove_column :documents, :platform. end
end
c. rake db:migrate

a. ruby script/generate migration create_users_table
b. class CreateUsersTable < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.column :usertype, :string, :limit => 5, :null => false
t.column :firstname, :string, :limit => 30
t.column :lastname, :string, :limit => 30
t.column :extension, :string, :limit => 4
end
add_column :documents, :user_id, :integer
end
def self.down
drop_table :users
remove_column :documents, :user_id
end
end
c. rake db:migrate

4.ruby script/generate scaffold document
5.编辑 /app/models/document.rb
class Document < ActiveRecord::Base
belongs_to :user
end
6.ruby script/generate scaffold user
7.编辑 /app/models/user.rb
class User < ActiveRecord::Base
has_many :document
end

8. ruby script/server


*ruby script/generate scaffold XXX 等同以下3个
ruby script/generate controllers XXX
ruby script/generate views XXX
ruby script/generate models XXX


*ruby on rails实现基本的增删查改
1.create table products (
id int not null auto_increment,
title varchar(100) not null,
description text not null,
image_url varchar(200) not null,
price decimal(10,2) not null,
date_available datetime not null,
primary key (id));

2.ruby script/generate scaffold product title:string description:text image_url:string (生成了migrate文件,用来生成数据库表,可以不在第一步创建表,只需创建database)

3.rake db:migrate(根据migrate目录下的文件生成数据库表)


*shopping cart sample
create table products (
id int not null auto_increment,
title varchar(100) not null,
description text not null,
image_url varchar(200) not null,
price decimal(10,2) not null,
date_available datetime not null,
primary key (id));

create table line_item(
id int(11) primary key auto_increment,
product_id int(11) ,
quantity int(11),
unit_price decimal(10,2));

1. ruby script/generate scaffold Product name:string description:text

2. ruby script/generate controller Store index display_cart
controllers/store_contorller.rb
class StoreController < ApplicationController
def index
@products = Product.salable_items
end
def display_cart
@cart = find_cart
@items = @cart.items
end
def add_to_cart
product = Product.find(params[:id])
@cart = find_cart
@cart.add_product(product)
redirect_to(:action => 'display_cart')
end
private
def find_cart
session[:cart] ||= Cart.new
end
end

3. models/cart.rb
class Cart
attr_reader :items
attr_reader :total_price

def initialize
@items = []
@total_price = 0.0
end

def add_product(product)
item = @items.find {|i| i.product_id == product.id}
if item
item.quantity += 1
else
item = LineItem.for_product(product)
@items << item
end
@total_price += product.price
end
end

4.models/line_item.rb
class LineItem < ActiveRecord::Base
belongs_to :product

def self.for_product(product)
item = self.new
item.quantity = 1
item.product = product
item.unit_price = product.price
item
end
end

5.views/store/index.html.erb
<h1>Listing products</h1>

<table>
<tr>
<th>Title</th>
<th>Description</th>
<th>Image url</th>
</tr>

<% for product in @products %>
<tr>
<td><%=h product.title %></td>
<td><%=h product.description %></td>
<td><%=h product.image_url %></td>
<td><%= link_to 'Show', product %></td>
<td><%= link_to 'Edit', edit_product_path(product) %></td>
<td><%= link_to 'Add to Cart',{:action => 'add_to_cart', :id => product },:class => 'addtocart' %></td>
<td><%= link_to 'Destroy', product, :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>

<br />

<%= link_to 'New product', new_product_path %>

6 views/store/display_cart.html.erb
<html>
<head>
<%= stylesheet_link_tag "scaffold", "depot", "admin", :media => "all" %>
</head>
<div id="cartmenu">
<ul>
<li><%= link_to 'Continue shopping', :action => "index" %></li>
<li><%= link_to 'Empty cart', :action => "empty_cart" %></li>
<li><%= link_to 'Checkout', :action => "checkout" %></li>
</ul>
</div>
<table cellpadding="10" cellspacing="0">
<tr class="carttitle">
<td rowspan="2">Qty</td>
<td rowspan="2">Description</td>
<td colspan="2">Price</td>
</tr>
<tr class="carttitle">
<td>Each</td>
<td>Total</td>
</tr>
<%
for item in @items
product = item.product
-%>
<tr>
<td><%= item.quantity %></td>
<td><%= h(product.title) %></td>
<td align="right"><%= item.unit_price %></td>
<td align="right"><%= item.unit_price * item.quantity %></td>
</tr>
<% end %>
<tr>
<td colspan="3" align="right"><strong>Total:</strong></td>
<td id="totalcell"><%= @cart.total_price %></td>
</tr>
</table>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值