`
youyun_2008
  • 浏览: 110778 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

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>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics