`

5个使用Rails控制台的有用技巧

阅读更多
update: 2011/10/26

1. 只想测试不想,真修改数据库
ruby script\console --sandbox
Loading development environment in sandbox.
Any modifications you make will be rolled back on exit.
>>

2. reload! 代码修改后的更新

3. 测试controller的返回

app.https!
#Then to get a URL you can use the simple get method:

app.get('/my/path')
#If you want to put or post to a URL there are also methods for that. You can copy/paste the parameters exactly as they are displayed in your Rails production log:

app.post('/foo', {"this" => "that", "items" => ["bar", "baz"]})
app.put('/foo', {"this" => "that", "items" => ["bar", "baz"]})
#If you want to sent a custom header, you can add an optional third parameter:

app.post('/foo', {:this => "that", :items => ["bar", "baz"]}, {"X-Do-Something" => "yes"})



    对于Rails控制台的使用,往往对于调试开发过程是相当重要的.对于还不知道rails控制台的读者而言也不要紧,你只要在项目的根目录输入
ruby script/console
并看到类似irb的场景就可以使用了,不同的是这个控制台还加载了Rails的运行时态环境,例如插件.

    下面的介绍是大部分开发人员不太熟悉却十分有用的控制台技巧.

    一.  下划线方法 _

下划线返回上一条命令的返回值.如果,你刚好查看了一个表达式的值,那么,你可以使用_方法,取得这个表达式的值,并赋值给一个变量.下划线方法的使用如下:

>> City.all
=> [#<City id: 218996838, name: "Chatswood", postcode: "2067", state_id: 944944227, created_at: "2009-03-30 01:56:22", updated_at: "2009-03-30 01:56:22">, #<City id: 957448139, name: "Roseville", postcode: "2069", state_id: 944944227, created_at: "2009-03-30 01:56:22", updated_at: "2009-03-30 01:56:22">, #<City id: 1015505586, name: "Willoughby", postcode: "2068", state_id: 944944227, created_at: "2009-03-30 01:56:22", updated_at: "2009-03-30 01:56:22">]


这时如果你忘了,把这个输出,赋值给你的一个变量.那么不要紧:

>> c = _
=> [#<City id: 218996838, name: "Chatswood", postcode: "2067", state_id: 944944227, created_at: "2009-03-30 01:56:22", updated_at: "2009-03-30 01:56:22">, #<City id: 957448139, name: "Roseville", postcode: "2069", state_id: 944944227, created_at: "2009-03-30 01:56:22", updated_at: "2009-03-30 01:56:22">, #<City id: 1015505586, name: "Willoughby", postcode: "2068", state_id: 944944227, created_at: "2009-03-30 01:56:22", updated_at: "2009-03-30 01:56:22">]


要注意的是,如果,这个值没有被"_"捕获,将在下一条新表达式的执行下被覆盖.

    二. y 方法

实际上这个方法只是Kernel的y 方法.然而,它在这里却十分有用,特别是你要在irb的会话理,打印出一些符合格式输出的表达式的时候.比如YAML文件.使用如下:

>> { :foo => 'bar', :woo => { :ooo => 1 } }
=> {:foo=>"bar", :woo=>{:ooo=>1}}
>> y _--- 
:foo: bar
:woo: 
  :ooo: 1
=> nil


这个方法特别对于输出大容量的collectionRails Models时特别有用.

     三. pp库

和上面的y方法类似,pp也是一个相当好的用于打印输出的库文件.如果你想要输出一个很复杂的collections数据,你只需要在你的irb会话理注明require pp.然后,你就可以看到它出众的效果了:
>> require 'pp'
=> true
>> pp City.all
[#<City id: 218996838, name: "Chatswood", postcode: "2067", state_id: 944944227, created_at: "2009-03-30 01:56:22", updated_at: "2009-03-30 01:56:22">,
 #<City id: 957448139, name: "Roseville", postcode: "2069", state_id: 944944227, created_at: "2009-03-30 01:56:22", updated_at: "2009-03-30 01:56:22">,
 #<City id: 1015505586, name: "Willoughby", postcode: "2068", state_id: 944944227, created_at: "2009-03-30 01:56:22", updated_at: "2009-03-30 01:56:22">]
=> nil


如果,你希望能够更容易的使用,接着看下面:

       四 .irbrc

对于默认的linux和unix操作系统而言,.irbrc文件存放在用户的$HOME目录下,用来预先加载需要在irb里面使用的文件.在这里我们同样可以使用,当然,在Windows下的用户需要自己创建这个irbrc文件并且用IRBRC变量在evironment的中标识.

你可以在这个文件中放置任何你需要加载的ruby命令,示例如下:
require 'rubygems'
require 'irb/completion'
require 'pp'
require 'yaml'

def gvim(x)
  IO.popen( 'gvim -', 'w') do |io|
    io.puts x.to_yaml
  end
end

def less(x)
  IO.popen( 'less -', 'w') do |io|
    io.puts x.to_yaml
  end
end


如上,可以看到在这个文件里可以加载任何你要要加载的库文件.甚至,你也可以在这个文件里写你自己定义的方法.

    五. 完全定制


在上面的.irbrc文件示例的基础上,其实,还有一些更高级的定制,当然,或许还需要一些,插件包的支持.你可以通过下面的例子看到.
这里只看一个例子:

> 3.45.what? 3
3.45.truncate == 3
3.45.to_i == 3
3.45.prec_i == 3
3.45.floor == 3
3.45.to_int == 3
3.45.round == 3
=> ["truncate", "to_i", "prec_i", "floor", "to_int", "round"]
> 3.45.what? 4
3.45.ceil == 4
=> ["ceil"]
> 3.55.what? 4
3.55.ceil == 4
3.55.round == 4
=> ["ceil", "round"]


当然,条件是你需要在.irbrc的文件里添加类似如下的,代码和文件定义:
 class MethodFinder
   def initialize( obj, *args )
     @obj = obj
     @args = args
   end
   def ==( val )
     MethodFinder.show( @obj, val, *@args )
   end
 end

 class Object
   def what?(*a)
     MethodFinder.new(self, *a)
   end
 end


用来实现类似的功能:
 >> "hello".what?  5
 "hello".length  5
 “hello”.size == 5
 => [“length”, “size”]

 >> “foo”.what?(“bar”)  "foobar" 
 "foo".<<("bar")  “foobar” 
 “foo”.+(“bar”)  "foobar" 
 "foo".concat("bar")  “foobar” 
 => [“<<”, ”+”, “concat”]



其它的这里就不详细描述了.
分享到:
评论

相关推荐

    awesome_rails_console, Rails 控制台增强使你的Rails 控制台更加出色.zip

    awesome_rails_console, Rails 控制台增强使你的Rails 控制台更加出色 使你的Rails 控制台非常出色这个 gem 是由使用pry生产,jazz_hands和 jazz_fingers的激发 was 。awesome_rails_console的优点是:减少 gem ...

    awesome_rails_console:Rails 控制台增强 - 让你的 Rails 控制台很棒

    使您的Rails Console很棒这个 gem 的灵感来自 、 和 。 awesome_rails_console的优点是: 更少的宝石依赖关系(仅使用除prail-rails和awesome_print之外的rails。其余都是可选的) 更简单的提示修改(类似于你已经...

    capistrano-rails-console:Capistrano插件,它添加了远程Rails控制台和dbconsole

    `capistrano-rails-console`是针对Capistrano的一个插件,专门用于在远程服务器上提供Rails控制台和数据库控制台(dbconsole)的功能。 ### Capistrano基础知识 Capistrano的核心是基于任务的,这些任务可以是内置...

    rails_console_toolkit:可配置的 Rails 控制台助手

    RailsConsole 工具包 :wrench: :toolbox: 可配置的 Rails 控制台助手更快地查找记录,添加自定义助手,将您的控制台寿命提高 100%。安装将此行添加到应用程序的 Gemfile 中: gem 'rails_console_toolkit' 然后生成...

    rspec-console:在rails控制台中运行RSpec测试

    RSpec控制台 RSpec控制台允许您在Rails控制台中运行RSpec测试。 最好与搭配使用。 在使用,它特别有用,因为它将为您保持活动的JVM运行。 这极大地减少了在jRuby中...使用Rails,使用rails c test启动控制台。 4)

    irt:交互式Ruby工具-改进的irb和rails控制台,提供了许多简单而强大的工具

    如果您使用IRT代替irb,则将拥有所有常规的irb / rails控制台功能,以及许多使您的生活更加轻松的工具。 强大而简单 彩色输出清晰易读 三种类型的会话:交互,检查和绑定 从您的代码(或erb模板)中打开irb / irt...

    that:Rails 控制台万能寻物机

    GitHub Rails 应用程序在控制台中有一个很好的辅助方法,称为dat ,它可以从基于字符串的各种模型中获取正确的信息。 这是用于通用用途的类似内容(根本不基于相同的实现,我只是希望能够在我的所有 Rails 应用程序...

    archer:Heroku、Docker 等的 Rails 控制台历史记录

    Gemfile 以仅将其包含在您需要的环境中: gem 'archer-rails' , group : [ :production ]这个怎么运作Ruby 将控制台历史记录存储在由以下文件指定的文件中: IRB . conf [ :HISTORY_FILE ] 此文件会在临时文件系统上...

    Ruby-GoOnRails使用Rails生成器来生成一个Golang应用

    这个工具简化了在Rails项目中使用Go进行后端处理的流程,使开发者可以利用Go的性能优势处理高并发请求,同时保留Rails的便捷开发体验。 ### 2. 安装`GoOnRails` 首先,确保你的系统已经安装了Rails和Go。接下来,...

    在Rails中使用SSL

    5. **开发环境中的SSL**:在本地开发环境中,可以使用Puma或Webrick等服务器的SSL支持,或者通过ngrok等工具创建一个临时的公共HTTPS隧道。 6. **证书配置**:在生产环境中,你需要购买并配置有效的SSL证书。这通常...

    Rails3常用命令行命令

    Rails3 是 Ruby on Rails 框架的一个版本,它提供了一系列强大的命令行工具,使得开发者可以快速地构建和管理Web应用。在本文中,我们将深入探讨Rails3中的常用命令,帮助你更高效地进行开发工作。 首先,新建一个...

    Rails 101 入门电子书

    - **前置技能**: 学习本书之前,读者需要具备一定的基础技能,包括Git的基本操作、编辑器的使用技巧以及Linux命令行的基础知识。 - **推荐资源**: - **Git学习资源**: - 推荐书籍或教程。 - **编辑器学习资源**: ...

    使用Aptana+Rails开发Rails Web应用(中文)

    本教程将详细介绍如何使用Aptana与Rails结合,创建一个功能完备的Web应用程序。 首先,我们需要安装Aptana Studio。你可以从其官方网站下载最新版本的安装包。安装过程中,遵循提示进行,确保选择自定义安装并勾选...

    Rails项目源代码

    这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...

    Rails

    描述中提到的博文链接指向了一个ITEYE博客文章,尽管具体内容未提供,但通常这样的博客可能会包含Rails的使用技巧、最佳实践、新版本更新或者特定问题的解决方案。 标签 "源码" 暗示了可能涉及Rails的源代码分析或...

    rails有用的命令

    - `rails new demo`:这将创建一个新的Rails应用程序,名为“demo”。它会生成所有基本目录结构和配置文件。 2. **启动服务器**: - `rails server` 或 `rails s`:这个命令启动Rails开发服务器,默认端口为3000...

    centOS Rails3环境搭建

    进入项目目录后,可以使用以下命令启动Rails控制台和服务器: ```bash cd my_project_name rails console rails server -p 3000 ``` ##### 7. 文档与API文档 可以通过`rake doc:rails`命令生成Rails API文档: `...

    micro-reddit:通过使用Rails构建轻量级Reddit克隆进行主动记录实践

    轻量级Reddit克隆在此项目中,我们将构建支持链接提交和评论所需的数据结构。... 您应该能够使用rails c运行Rails控制台用法尝试在控制台中使用一些Rails查询,例如User.all或Post.last.comments ,并检查从数据

    Rails3 使用rake启动后台任务

    5. **Resque**: 类似于 DJ,Resque 也是一个队列系统,但它使用 Redis 作为后端存储。Resque 支持多线程和分布式工作环境。 6. **Sidekiq**: Sidekiq 是另一个高效的工作队列,它直接使用多线程而不是 fork 进程,...

Global site tag (gtag.js) - Google Analytics