Difference between revisions of "Ruby Notes"
Jump to navigation
Jump to search
PeterHarding (talk | contribs) |
PeterHarding (talk | contribs) |
||
Line 27: | Line 27: | ||
|} | |} | ||
{| | {|style="color:aqua; background-color:#ffffcc;" cellpadding="20" cellspacing="0" border="1" | ||
|Variable Name||Variable Value|- | |||
|$@||The location of latest error|- | |Variable Name||Variable Value | ||
|$_ ||The string last read by gets|- | |- | ||
|$. ||The line number last read by interpreter|- | |$@||The location of latest error | ||
|$& ||The string last matched by regexp|- | |- | ||
|$~ ||The last regexp match, as an array of subexpressions|- | |$_ ||The string last read by gets | ||
|$n ||The nth subexpression in the last match (same as $~[n])|- | |- | ||
|$= ||The case-insensitivity flag|- | |$. ||The line number last read by interpreter | ||
|$/ ||The input record separator|- | |- | ||
|$\ ||The output record separator|- | |$& ||The string last matched by regexp | ||
|$0 ||The name of the ruby script file currently executing|- | |- | ||
|$* ||The command line arguments used to invoke the script|- | |$~ ||The last regexp match, as an array of subexpressions | ||
|$$ ||The Ruby interpreter's process ID|- | |- | ||
|$? ||The exit status of last executed child process|- | |$n ||The nth subexpression in the last match (same as $~[n]) | ||
|- | |||
|$= ||The case-insensitivity flag | |||
|- | |||
|$/ ||The input record separator | |||
|- | |||
|$\ ||The output record separator | |||
|- | |||
|$0 ||The name of the ruby script file currently executing | |||
|- | |||
|$* ||The command line arguments used to invoke the script | |||
|- | |||
|$$ ||The Ruby interpreter's process ID | |||
|- | |||
|$? ||The exit status of last executed child process | |||
|- | |||
|} | |} | ||
Revision as of 10:55, 23 September 2009
References
Variables
Name Begins With | Variable Scope |
$ | A global variable |
@ | An instance variable |
[a-z] or _ | A local variable |
[A-Z] | A constant |
@@ | A class variable |
Variable Name | Variable Value |
$@ | The location of latest error |
$_ | The string last read by gets |
$. | The line number last read by interpreter |
$& | The string last matched by regexp |
$~ | The last regexp match, as an array of subexpressions |
$n | The nth subexpression in the last match (same as $~[n]) |
$= | The case-insensitivity flag |
$/ | The input record separator |
$\ | The output record separator |
$0 | The name of the ruby script file currently executing |
$* | The command line arguments used to invoke the script |
$$ | The Ruby interpreter's process ID |
$? | The exit status of last executed child process |
Class vs. Instance Variables
- http://www.rubycentral.com/pickaxe/tut_classes.html
- http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Classes
- http://railstips.org/2006/11/18/class-and-instance-variables-in-ruby
- http://sporkmonger.com/2007/2/19/instance-variables-class-variables-and-inheritance-in-ruby
- http://martinfowler.com/bliki/ClassInstanceVariable.html
The definition of the class instance variable is the fragment
class << self; attr_accessor :instances; end.
This defines an instance variable (and getters and setters) on the class that's inherited by its descendents. Unlike class variables these class instance variables will take different values for each class object.
HTTP
Refactor
module Anubis module ShardAccess require "net/http" LIB_VERSION = 'r1b' class Read attr_accessor :path, :body, :headers def initialize( path_in, body_in, accept='xml', limit=10 ) self.path = path_in self.body = body_in self.headers = { 'Interface' => 'S1', 'Accept' => accept, 'Limit' => limit.to_s, 'Content-Type' => 'application/x-www-form-urlencoded', 'User-Agent' => 'RB_SHARD_ACCESS_LIB_' + Anubis::ShardAccess::LIB_VERSION } end def call ( host, port ) http = Net::HTTP.new( host, port ) resp = http.post2( @path, @body, @headers ) end end end end host = 'IP.AD.RE.SS' port = 10001 path = '/message' body = "query_string" req = Anubis::ShardAccess::Read.new( path, body, 'csv', 1 ) data = req.call( host, port ) puts data.body
to
# no need to put this within the module body as it will be loaded regardless require 'net/http' module Anubis module ShardAccess LIB_VERSION = 'r1b' class Read attr_accessor :path, :body, :headers #usually past a few args you should provide an options has to make things more readable # such as Read.new foo, bar, :accept => :csv, :limit => 1 def initialize path, body, options = {} @path, @body = path, body @headers = { 'Interface' => 'S1', 'Accept' => options.fetch(:accept, :xml), # Hash#fetch will use the keys value when found, otherwise the second argument is used (:xml) 'Limit' => options.fetch(:limit, 10), 'Content-Type' => 'application/x-www-form-urlencoded', 'User-Agent' => 'RB_SHARD_ACCESS_LIB_' + LIB_VERSION } end def call host, port Net::HTTP.new(host, port).post2 path, body, headers end end end end