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 Cookbook Source"这个压缩包中,我们可以期待找到一系列的Ruby代码示例,这些示例可能涵盖了各种常见的编程问题和最佳实践。Ruby Cookbook通常会包含解决特定问题的代码片段,帮助开发者更好地理解和应用...
这个库使得在Ruby环境中进行Web服务交互变得极其简单,是开发者进行API测试和集成时的常用工具。RESTClient提供了丰富的功能,可以方便地发送GET、POST、PUT、DELETE等各种HTTP请求,并能处理响应的各种数据格式,如...
在Itamae的压缩包文件"itamae-master"中,可能包含了Itamae的源代码、示例配置脚本、文档、测试以及其他相关资源。通过解压这个文件,你可以深入了解Itamae的内部实现,学习如何编写配置脚本,甚至参与其开发或贡献...
Ubuntu用户通常会依赖于包管理工具`apt-get`来安装Ruby,这种方式虽然简单便捷,但在某些情况下可能无法满足定制化的需求。本文将详细介绍如何通过手动编译的方式安装Ruby,并提供一种灵活的升级策略。 #### 手动...
### Ruby详解及安装流程 #### 一、Ruby详解 Ruby是一种高级编程语言,以其简单易学、灵活多变以及优雅的语法而闻名。作为一种面向对象的语言,Ruby支持动态类型和解释执行,使得开发者能够轻松地编写出清晰且具有...
现在我们来看 `demo` 文件,它可能包含了一个简单的 Ruby 插件示例。在实际的开发中,这个 `demo` 文件可能会有以下结构: - `lib/logstash/input/demo.rb`: 这是一个输入插件的示例,定义了新的输入源。 - `lib/...
4. **配置文件**:使用Ruby DSL(领域特定语言)编写配置文件,使得设置和管理进程监控变得简单直观。 5. **资源限制**:可以为每个进程设置资源限制,如内存和CPU使用率,防止进程占用过多系统资源。 6. **日志...
以下是一个简单的类示例: ```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-God是一个用Ruby语言编写的监控框架,其设计目标是提供一个简单、灵活且可扩展的工具,用于管理各种系统服务和应用的运行状态。God以其强大的功能和易用性在Ruby社区中赢得了广泛的认可。 God框架的核心理念是...
对于Windows用户来说,最简单的安装方法是下载安装包,双击打开进行安装,安装程序会自动完成必要的文件安装和环境变量的配置。 Ruby的开发环境可以是多种编辑器,包括使用SciTE,这是一款类似于Emacs的文本编辑器...
例如,一个简单的Ruby程序使用qtbindings创建一个带按钮的窗口可能如下所示: ```ruby require 'qtbindings' app = Qt::Application.new [] button = Qt::PushButton.new('点击我') button.show app.exec ``` ...
为了更好地管理 Ruby 的环境配置,可以设置一些环境变量,例如: - `RUBYLIB`:指定 Ruby 脚本的搜索路径。 - `GEM_PATH`:指定 Ruby gem 库的路径。 - `GEM_HOME`:指定默认的 gem 安装目录。 通过设置这些环境...
Hprose Ruby 提供了丰富的配置选项,例如设置超时时间、启用日志、调整序列化策略等。用户可以根据实际需求进行配置以优化性能或满足特定需求。 ### 5. 错误处理与调试 在 Hprose Ruby 中,错误通常通过异常抛出。...
**MVC模式简介** MVC(Model-View-Controller)是一种经典的软件设计模式,广泛应用于Web应用程序开发,尤其...通过这个简单的示例,初学者可以更好地理解MVC模式的工作原理,并逐步掌握如何在实际项目中应用MVC架构。
`ini_reader.rb`可能就是这么一个简单的实现,或者它可能使用了`configparser`库,该库是Python中的标准配置解析器,但也有一个适用于Ruby的版本。使用`configparser`库可以简化代码,如下所示: ```ruby require '...
在这个示例中,我们将探讨如何利用Net::HTTP库来构建一个简单的验证系统。 首先,让我们理解短信验证码的原理。短信验证码是一种安全机制,通常用于身份验证或防止欺诈行为。用户在注册或登录时,系统会向他们的...
Ruby on Rails是Ruby最知名的Web开发框架,它倡导“约定优于配置”的原则,极大地提高了开发效率。Rails提供了许多开箱即用的功能,如ActiveRecord(ORM)、ActionController和ActionView,使得开发者能够快速创建...
Rails5作为Ruby on Rails框架的一个重要版本,引入了ActionCable这一特性,它使得开发实时、双向通信的应用变得异常简单。IkaGame示例就是这样一个利用ActionCable实现的游戏应用,通过WebSocket协议,实现了客户端...
下面是一个简单的 Ruby 代码示例,展示了如何定义一个类和方法: ```ruby class Person attr_accessor :name, :age def initialize(name, age) @name = name @age = age end def introduce puts "Hello, I...
6. **示例代码**:可能包含一些简单的 Ruby 示例程序,帮助初学者了解语言特性。 要使用这个压缩包,你需要遵循以下步骤: 1. **解压**:首先,使用 `tar -xvf ruby-1.8.5.tar` 命令解压文件。 2. **进入目录**:...