`
52jobs
  • 浏览: 10988 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

ruby 小技巧

阅读更多
#Track 1: The C in MVC  #irb Mix Tape http://errtheblog.com/posts/24-irb-mix-tape
#深入讲解 app http://pragmaticstudio.com/blog/2006/4/4/running-your-rails-app-headless

$ ruby script/console
#Loading development environment.
>> app.url_for(:controller => 'stories', :action => 'show', :id => '10002')
=> "http://www.example.com/stories/10002" 
>> app.get '/stories/10002'   => 200
>> app.assigns(:story)        => #<Story:0x24aad0c ... >
>> app.path                   => "/stories/10002" 
>> app.reset!                 => nil
>> app.get '/yeah/right/dude' => 404
>> app.post '/account/login', { :username => 'defunkt', :password => 'razzletaz' }  => 200
>> app.cookies                => {"_session_id"=>"9d1c014f42881524ff6cb81fb5b594bc"}

>>app.products_path                =>"/products"
>>app.get _                    =>200
>>app.class                    =>ActionController::Integration::Session
>>app.response.headers
>>app.assigns(:producs) #指controller中是不含有 @products的实例变量
app通常可用来用集成测试 intergration test
与app 相关的
assigns - Any objects that are stored as instance variables in actions for use in views.
cookies - Any cookies that are set.
flash - Any objects living in the flash.
session - Any object living in session variables.

flash["gordon"]               flash[:gordon]
session["shmession"]          session[:shmession]
cookies["are_good_for_u"]     cookies[:are_good_for_u]
 
# Because you can't use assigns[:something] for historical reasons:
assigns["something"]          assigns(:something)
可以访问以下三个实例变量

@controller - The controller processing the request
@request - The request
@response - The response




#Track 2: The Help in MVC
$ ruby script/console
Loading development environment.
>> helper.pluralize 2, "story"  => "2 stories" 
>> helper.submit_tag            => "<input name=\"commit\" type=\"submit\" value=\"Save changes\" />" 
>> helper.visual_effect :blindUp, 'post'  => "new Effect.BlindUp(\"post\",{});" 

#Track 3: Context
Spawn irb subsessions in the context of an object
$ ruby script/console 
Loading development environment.
>> irb Story
>> self             => Story
>> find(:first)     => #<Story:0x2427c2c ... >
>> quit
>> irb Story.find(:first)
>> title            => "Mail-Order Desserts" 
>> quit             => #<IRB::Irb: @scanner=#<RubyLex:0x249a36c>, @context=#<IRB::Context:0x249e534>, @signal_status=:IN_EVAL>
>> irb app
>> host             => "www.example.com" 
It’s like you’re actually in the object. Any methods you call are getting called on the object whose context and privacy you have invaded. Saves some typing and gets you in with @instance_variables, too. Remember: you can use this in normal irb as well.


Track 4: Sandboxin’
$ ruby script/console --sandbox           =>Loading development environment in sandbox.
>> story = Story.find(:first)             => #<story:0x244f0ec>
>> story.title                            => "Mail-Order Desserts" 
>> story.title = "Snail Mail Droooolz!"   => "Snail Mail Droooolz!" 
>> story.save                             => true
>> Story.find(:first).title               => "Snail Mail Droooolz!" 
>> quit
$ ruby script/console                     =>Loading development environment.
>> Story.find(:first).title               => "Mail-Order Desserts" 


Track 5: Watson the Underbar
>> 1 + 1    => 2
>> _        => 2
>> _ * _    => 4
   


Track 6 – Auto-completion in IRB 看动填充
"hello".to_<double TAB here 两次tab >
.to_a    .to_f    .to_i    .to_s    .to_str  .to_sym

Track 7 – Map by Method http://drnicutilities.rubyforge.org/ 使用新gem 增强 map
list = ['1',  '2', '3']        => ["1", "2", "3"]
list.map {|item| item.to_i}    => [1, 2, 3]
list.map &:to_i                => [1, 2, 3]
["1","2","3"]. map_by_to_i     => [1,2,3]

ActiveRecord 也要可使用 map by method
$ gem install map_by_method
$ console
> require 'map_by_method'  # stick this in your environment.rb for Rails
> user = User.find_by_name "Dr Nic"
> user.companies.map_by_name         => ['Dr Nic Academy', 'Dr Ni']
> user.companies.map_by_id_and_name  => [[1, 'Dr Nic Academy'], [9, 'Dr N']]
>> User.find(:all).map_id_and_firstname => [[1, "Glenda"], [2, "Brenda"], [3, "Yas"]]

新gem to_acitiverecord
$ gem install to_activerecord
$ console
> require 'to_activerecord'  # stick this in your environment.rb for Rails
> [1,2,3].to_user.map_by_name   => ['Dr Nic', 'Banjo', 'Nancy']
传统写法是 User.find(ids).map_by_name


Track 7 – MethodFinder/Object.what? 注意,经验证,好像只适合用数字  
gem install what_methods    require 'what_methods'
> 3.45.what? 3
3.45.truncate == 3
3.45.to_i == 3
=> ["truncate", "to_i", "prec_i", "floor", "to_int", "round"]

Track 8 The explicit Ruby metaclass
$ gem install magic_metaclass
$ irb
require 'rubygems'
require 'magic_metaclass'
class Person; end
Person            # => Person
PersonMetaclass   # => #<Class:Person>
PersonClass       # => #<Class:Person>
PersonEigenclass  # => #<Class:Person>
PersonEigen       # => #<Class:Person>


Track 9 经典用法
$ script/console production
$ script/console test
$ script/console development

>> @george = Person.find_by_name('George')
>> @bob = Person.find_by_name('Bob')
>> @bob.friends << @george
>> puts @bob.to_yaml
>> y @bob
>> reload!
分享到:
评论

相关推荐

    几个Ruby小技巧分享

    主要介绍了几个Ruby小技巧分享,本文讲解了代码块的序列调用、主要是说array在block中的使用、Hash#fetch、创建代码段的散列等小技巧,需要的朋友可以参考下

    Ruby on Rails开发 从入门到精通实战教程.rar

    数据库操作: 掌握Rails框架中对数据库的操作方法,包括模型定义、数据迁移、数据查询等数据库操作技巧。 阅读建议: 逐步学习: 按照教程的顺序,逐步学习Ruby on Rails开发的各个知识点,保持持续的学习和实践。 ...

    Ruby迭代器的7种技巧分享

    Ruby由于吸收了Perl的正则表达式和Python的可读性,所以其中的计数取值方法,是非常人性化和灵活的,这里可以...三、打印1..9中比7要小的数值,如下: 代码如下: 1.upto(9){|i| print i,” ” if i &lt; 7} 四、从10循

    pure-ruby-curriculum:Ruby 培训课程

    在课堂上我会指出rvm的特点和技巧。 Ruby 2.2.0 不是严格要求的,但强烈推荐,因为安装它会激发探索 rvm 的有用性(Ruby 2.1.x 和 Ruby 2.2.0 之间没有太大区别)。 选定的读数待定格式“代码跟随”:我将在我自己...

    小胡子:无逻辑的Ruby模板

    有关实现(除Ruby之外)和技巧的列表,请参见 。 概述 将小胡子想像成您的观点的替代品。 您的视图分为两部分:Ruby类和HTML模板,而不是由带有随机助手和任意逻辑的ERB或HAML组成。 我们将Ruby类称为“视图”,将...

    Ruby中创建字符串的一些技巧小结

    %{String} 用于创建一个使用双引号括起来的字符串 %Q{String} 用于创建一个使用双引号括起来的字符串 代码如下: str=&lt;&lt;END xss=removed&gt; ” Some String of /”Characters/” “ %q{String} 用于创建一个使用...

    Ruby-script-app:T1A3

    Ruby脚本应用T1A3向用户提供有关如何将其脚本以.txt格式导入文件的说明链接到GitHub 软件开发计划从高层次描述应用程序将执行的操作该应用程序将帮助演员学习他们的台词并发展他们的记忆技巧。 用户可以将当前正在...

    处理JavaScript值为undefined的7个小技巧

    现在的大多数语言,像Ruby, Python or Java,他们有一个单独的空值(nil 或 null),这似乎才是一个合理的方式。 而在JavaScript里,当你要获取一个变量或对象(未初始化)的值时,js引擎会返回 undefined。 let ...

    fastlane-plugin-versioning:扩展快速通道版本控制操作。 允许在不使用agvtool的情况下setget版本并执行其他一些小技巧

    允许在不使用agvtool的情况下设置/获取版本以及执行其他一些小技巧。 需要注意的是所有办法传递给喜欢动作increment_version_number_in_plist , increment_build_number_in_xcodeproj或get_info_plist_path在...

    ruby-oo-继承模块-chi01-seng-ft-010620

    Ruby中的模块和Mixins ... 因此,我们可以编写一个Kid班,在该班的一个实例中,我们去看芭蕾舞的小女孩应该可以使用所有这些芭蕾舞动作(尽管她有表演技巧)。 这种情况不是分层的,就像我们的Car and Ve

    ruby-oo-inheritance-modules

    模块介绍 ... 因此,我们可以编写一个Kid班,在该班的一个实例中,我们去看芭蕾舞的小女孩应该可以使用所有这些芭蕾舞动作(尽管她有表演技巧)。 这种情况不是分层的,就像我们的Car and Vehicle示例。

    thames-clipper-notifications:在Mac状态栏中显示泰晤士快船的实时起飞的详细信息

    这是一个旨在与一起使用的小技巧,它将在Mac状态栏中显示London 实时出发信息。 它使用“丢失”的gem来访问Mac的CoreLocation服务,并使用该纬度和经度来搜索河流服务码头并从TFL获取实时出发的数据。 位置资料 ...

    分享6个Go处理字符串的技巧小结

    如果你从 Ruby 或者 Python 转型到 Go,将会有很多语言差异需要学习,其中很多问题都是围绕处理 string 类型。 下面是一些字符串的技巧,这些技巧解决了我在使用 Golang 的最初几周中遇到的问题。 1. 多行字符串 ...

    Rails recipes

    顾名思义,就是讲rails的小技巧,给你上rails的大餐,都是大牛们写的文章,对于想掌握常用技巧的开发者很有帮助

    fex-team.github.io.zip

    小技巧 jekyll 最终生成的文件会放在 _site 目录下,可以通过浏览这个目录来确认效果 img 目录的主要用途是放图片,但也可以放其它文件静态,如 zip 等 不常见的语法高亮缩写可以参考这里 写什么? 虽然对外会...

    正则表达式经典实例

    本书讲解了基于8种常用的编程语言使用正则表达式的经典实例。书中提供了上百种可以在实战...本书旨在教会读者很多新的技巧以及如何避免语言特定的陷阱,读者可以通过本书提供的实例解决方案库来解决实践中的复杂问题。

    Makopolis:小棋盘游戏(Makers Academy week9)

    马科波利斯 ##它是什么? 简单棋盘游戏-带有Ruby问题的(托管在heroku上) ...学习团队技巧 了解规划和设计 ##技术 Java脚本 jQuery查询 NODEjs,快递 Html CSS 吉特 赫鲁库 茉莉花 卡斯珀,摩卡,柴,咕unt声 W

    modules-reading-v-000

    Ruby中的模块和Mixins目标了解模块-跨... 因此,我们可以编写一个Kid班,在该班的一个实例中,我们去看芭蕾舞的小女孩应该可以使用所有这些芭蕾舞动作(尽管她有表演技巧)。 这种情况不是分层的,就像我们的Car and Ve

    Modules-Reading-Onl01-Seng-pt-081720

    Ruby中的模块和Mixins ... 因此,我们可以编写一个Kid班,在该班的一个实例中,我们去看芭蕾舞的小女孩应该可以使用所有这些芭蕾舞动作(尽管她有表演技巧)。 这种情况不是分层的,就像我们的Car an

Global site tag (gtag.js) - Google Analytics