`
youyun_2008
  • 浏览: 113545 次
  • 性别: 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>
分享到:
评论

相关推荐

    ruby 资源(代码范例)

    在"Ruby Cookbook Source"这个压缩包中,我们可以期待找到一系列的Ruby代码示例,这些示例可能涵盖了各种常见的编程问题和最佳实践。Ruby Cookbook通常会包含解决特定问题的代码片段,帮助开发者更好地理解和应用...

    Ruby-RESTClient简单的HTTP和Ruby的REST客户端

    这个库使得在Ruby环境中进行Web服务交互变得极其简单,是开发者进行API测试和集成时的常用工具。RESTClient提供了丰富的功能,可以方便地发送GET、POST、PUT、DELETE等各种HTTP请求,并能处理响应的各种数据格式,如...

    Ruby-受Chef启发的配置管理工具但更简单轻便原名Lightchef

    在Itamae的压缩包文件"itamae-master"中,可能包含了Itamae的源代码、示例配置脚本、文档、测试以及其他相关资源。通过解压这个文件,你可以深入了解Itamae的内部实现,学习如何编写配置脚本,甚至参与其开发或贡献...

    ruby安装升级及命令自行编译安装非APTGET方式安装升级的办法

    Ubuntu用户通常会依赖于包管理工具`apt-get`来安装Ruby,这种方式虽然简单便捷,但在某些情况下可能无法满足定制化的需求。本文将详细介绍如何通过手动编译的方式安装Ruby,并提供一种灵活的升级策略。 #### 手动...

    Ruby详解及安装流程,Ruby是一种高级编程语言,具有简单易学、灵活多变、优雅美丽的语法特点.md

    ### Ruby详解及安装流程 #### 一、Ruby详解 Ruby是一种高级编程语言,以其简单易学、灵活多变以及优雅的语法而闻名。作为一种面向对象的语言,Ruby支持动态类型和解释执行,使得开发者能够轻松地编写出清晰且具有...

    Logstash ruby 插件 demo

    现在我们来看 `demo` 文件,它可能包含了一个简单的 Ruby 插件示例。在实际的开发中,这个 `demo` 文件可能会有以下结构: - `lib/logstash/input/demo.rb`: 这是一个输入插件的示例,定义了新的输入源。 - `lib/...

    Ruby-BluepillRuby编写的简单进程监控工具

    4. **配置文件**:使用Ruby DSL(领域特定语言)编写配置文件,使得设置和管理进程监控变得简单直观。 5. **资源限制**:可以为每个进程设置资源限制,如内存和CPU使用率,防止进程占用过多系统资源。 6. **日志...

    ruby语法基础教程及Ruby教程中文版和安装文件

    以下是一个简单的类示例: ```ruby class Person attr_accessor :name, :age def initialize(name, age) @name = name @age = age end def introduce puts "我叫#{name},今年#{age}岁。" end end peter...

    Ruby-GodRuby编写的一个易于配置易于扩展的监测框架

    Ruby-God是一个用Ruby语言编写的监控框架,其设计目标是提供一个简单、灵活且可扩展的工具,用于管理各种系统服务和应用的运行状态。God以其强大的功能和易用性在Ruby社区中赢得了广泛的认可。 God框架的核心理念是...

    Ruby_learning_教程-中文版

    对于Windows用户来说,最简单的安装方法是下载安装包,双击打开进行安装,安装程序会自动完成必要的文件安装和环境变量的配置。 Ruby的开发环境可以是多种编辑器,包括使用SciTE,这是一款类似于Emacs的文本编辑器...

    Ruby-qtbindings允许你在Ruby中使用QTGui工具包

    例如,一个简单的Ruby程序使用qtbindings创建一个带按钮的窗口可能如下所示: ```ruby require 'qtbindings' app = Qt::Application.new [] button = Qt::PushButton.new('点击我') button.show app.exec ``` ...

    ruby - ruby tutorial

    为了更好地管理 Ruby 的环境配置,可以设置一些环境变量,例如: - `RUBYLIB`:指定 Ruby 脚本的搜索路径。 - `GEM_PATH`:指定 Ruby gem 库的路径。 - `GEM_HOME`:指定默认的 gem 安装目录。 通过设置这些环境...

    Hprose ruby 说明文档

    Hprose Ruby 提供了丰富的配置选项,例如设置超时时间、启用日志、调整序列化策略等。用户可以根据实际需求进行配置以优化性能或满足特定需求。 ### 5. 错误处理与调试 在 Hprose Ruby 中,错误通常通过异常抛出。...

    MVC的简单示例

    **MVC模式简介** MVC(Model-View-Controller)是一种经典的软件设计模式,广泛应用于Web应用程序开发,尤其...通过这个简单的示例,初学者可以更好地理解MVC模式的工作原理,并逐步掌握如何在实际项目中应用MVC架构。

    Ruby读取INI文件

    `ini_reader.rb`可能就是这么一个简单的实现,或者它可能使用了`configparser`库,该库是Python中的标准配置解析器,但也有一个适用于Ruby的版本。使用`configparser`库可以简化代码,如下所示: ```ruby require '...

    Ruby - NetHTTP实现短信验证码注册登录完整示例:Ruby - NetHTTP.rb和附件说明.rar

    在这个示例中,我们将探讨如何利用Net::HTTP库来构建一个简单的验证系统。 首先,让我们理解短信验证码的原理。短信验证码是一种安全机制,通常用于身份验证或防止欺诈行为。用户在注册或登录时,系统会向他们的...

    ruby介绍及相应的ruby demo示意源码,供大家参考学习

    Ruby on Rails是Ruby最知名的Web开发框架,它倡导“约定优于配置”的原则,极大地提高了开发效率。Rails提供了许多开箱即用的功能,如ActiveRecord(ORM)、ActionController和ActionView,使得开发者能够快速创建...

    IkaGame示例。使用 Rails5 ActionCable_ruby_代码_下载

    Rails5作为Ruby on Rails框架的一个重要版本,引入了ActionCable这一特性,它使得开发实时、双向通信的应用变得异常简单。IkaGame示例就是这样一个利用ActionCable实现的游戏应用,通过WebSocket协议,实现了客户端...

    Ruby 语言 Ruby 是一种动态、面向对象的脚本语言,具有简洁而富有表现力的语法 以下是 Ruby 语言的一些特点: 简单

    下面是一个简单的 Ruby 代码示例,展示了如何定义一个类和方法: ```ruby class Person attr_accessor :name, :age def initialize(name, age) @name = name @age = age end def introduce puts "Hello, I...

    ruby-1.8.5.tar

    6. **示例代码**:可能包含一些简单的 Ruby 示例程序,帮助初学者了解语言特性。 要使用这个压缩包,你需要遵循以下步骤: 1. **解压**:首先,使用 `tar -xvf ruby-1.8.5.tar` 命令解压文件。 2. **进入目录**:...

Global site tag (gtag.js) - Google Analytics