Posts filed under 'Ruby'
Exception Handling in Ruby
>begin expression executes its body and returns the value of the last evaluated expression.
>Any error in begin part will be caught by rescue depending upon parameters
>ensure is the one which must be exectued irrespective of exception occured or not
>An error message caught by an exception can be accessed using $!
For Java Programmers [ begin => try ; rescue => catch; ensure => finally]
begin p "I am doing well" p "so well .. and well" a = 8/0 rescue p "Something went wrong => " + $! ensure p "Oh Somehow I could finish my work" end
O/P:
“I am doing well”
“so well .. and well”
“Something went wrong => divided by 0″
“Oh Somehow I could finish my work”
a = 8
b = 0
begin
p "I am doing well"
p "so well .. and well"
if a==18
p "I am happy with a as 8"
elsif b == 0
p "Lets say I dont want this"
raise Exception
else
raise
end
rescue
p "Exception 1 caught here " + $!
rescue Exception
p "Exception 2 caught here " +$!
ensure
p "Oh Somehow I could finish my work"
end
O/P for [[ a = 8 and b = 0 ]]
“I am doing well”
“so well .. and well”
“Lets say I dont want this”
“Exception 2 caught here Exception”
“Oh Somehow I could finish my work”
O/P for [[ a = 8 and b = 1 ]]
“I am doing well”
“so well .. and well”
“Exception 1 caught here “
“Oh Somehow I could finish my work”
Add comment April 18, 2008
JRuby upgraded to version1.1
JRuby, which provides a version of the Ruby programming language to run on the Java Virtual Machine, has been upgraded, according to Sun.
Unveiled Monday as the second major project release, JRuby 1.1 features performance improvements, a re-factored IO implementation and improved memory consumption.
Also featured is compilation of Ruby to Java byte and an Oniguruma port to Java. Oniguruma is a regular expressions library.
“The main goal for version 1.1 was to improve performance,” said Sun engineer Thomas Enebo, in a statement released by Sun. “With the help from the community, we have made great strides in performance. There have been more and more reports of applications exceeding Ruby 1.8.6 performance; we are even beating Ruby 1.9 in some micro-benchmarks.”
Add comment April 13, 2008
RubyGems
A gem is a packaged Ruby application or library. It has a name and a version and have a specific task. Based on your requirement you may embed them into your application codes.
For eg.
activerecord 0.8.4
BlueCloth 0.0.4
captcha 1.1.2
cardinal 0.0.4
progressbar 0.0.3
rake 0.4.0
Gems are managed on your computer using the gem command. You can install, remove, and query gem packages using the gem command.
Installing RubyGems:
RubyGems is the name of the project that developed the gem packaging system and the gem command. You can get RubyGems from the RubyForge repository http://rubyforge.org/frs/?group_id=126
then type
ruby setup.rb
It installs the required library files and the gem command. This command gives us the power to do many things.
In a shortcut version at CLI we may use
q for query
r for remote
l for local
n for name
spec for specification
Listing remotely installable gems
gem query –remote
Searching remotely installable gems
gem query –remote –name-matches doom
# shortcut: gem q -R -n doom
Installing a remote gem
gem install –remote progressbar
or
gem ins -r progressbar-0.0.3
or
gem ins -r progressbar –version ‘> 0.0.1′
RubyGems allows you to have multiple versions of a library installed and choose in your code which version you wish to use.
Looking at an installed gem
gem specification progressbar
Listing all installed gems
gem query –local
remote or local
If you don’t specify either of these, then gem will (usually) try ’’both’’ a local and remote operation. For example:
gem ins rake # Attempt local installation; go remote if necessary
gem list -b ^C # List all local AND remote gems beginning with “C”
Coding With RubyGems
require ‘rubygems’
require ‘progressbar’
and then subsequently
bar = ProgressBar.new(“Example progress”, 50)
The first line of the program requires the progressbar library file. RubyGems will look for the progressbar.rb file in the standard library locations. If not found, it will look through its gem repository for a gem that contains progressbar.rb. If a gem is used, RubyGems attempts to use the latest installed version by default.
Specifying Versions
gem install –remote rake –version “0.4.14″
Updating RubyGems
gem update –system
or
gem install rubygems-update
update_rubygems
Uninstalling a gem
gem uninstall progressbar
Info extracted from : http://rubyforge.org/
Add comment April 12, 2008
and vs && in ruby
p true and false
p true && false
# true, false
p false and true
p false && true
# false, false
p true or false
p false or true
# true, false
p true || false
p false || true
# true, true
What happened???? You mean to say AND and && is different. In the same way OR and || behave in a distinct manner. No.
Still I don’t have a proper answer, except telling that here jack is with “p” or “puts” which always evaluates the very first parameter in case of “and” or “or”. When we use symbolic “&&” / “||” may be some precedence rule, which forces print statement to evaluate by having both operands left and right as well. means
p true && false ==> becomes ===> p (ture && false) , whereas
p true and false ==> becomes ===> p true //takes only one argument.
Please if someone has got a proper answer let me know.
2 comments April 12, 2008
history of Ruby
Author of Ruby, Yukihiro Matsumoto (aka matz), about the history of Ruby and why he developed a new language.
”Well, Ruby was born in Feb. 23 1993. At that day, I was talking with my colleague about the possibility of object-oriented scripting language. I knew Perl (Perl4, not Perl5), but I didn’t like it really, because it had smell of toy language (it still has). The object-oriented scripting language seemed very promising.
I knew Python then. But I didn’t like it, because I didn’t think it was a true object-oriented language. OO features are appeared to be add-on to the language. I, as a language mania and OO fan for 15 years, really really wanted a genuine object-oriented, easy-to-use object-oriented scripting language. I looked for, but couldn’t find one.
So, I decided to make it. It took several months to make the interpreter run. I put it the features I love to have in my language, such as iterators, exception handling, garbage collection.
Then, I reorganized the features in Perl into class library, and implemented them. I posted Ruby 0.95 to the Japanese domestic news-groups in Dec. 1995.
Since then, mail lists are established, web pages are formed. Highly active discussion was held in the mail lists. The oldest list ruby-list has 14789 messages until now.
Ruby 1.0 was released in Dec. 1996, 1.1 in Aug. 1997, 1.2 (stable version) and 1.3 development version) were released in Dec. 1998.
Next stable version 1.4 will be shipped this months (June 1999), hopefully.”

As you can see, Ruby was developed, having Perl, Python, Smalltalk and Eiffel (as well as some other languages) in mind. So matz took the best from the above called languages to make a new, better, object-orientated scripting-language.
1 comment April 7, 2008
do while in ruby
How to achieve the do ..while loop in Ruby?
Yes this can be, just bit tricky.
Just consider one of the syntax of while loop in ruby
<expression> while <expression>
This repeats evaluation of left hand side expression, while right hand side is true.
x = 5 begin print x print " " x += 1 end while(x<10) o/p 5 6 7 8 9
Add comment April 7, 2008
Class is an object
Are you really into a position to justify these outputs??
If so, means your OOP concepts in RUBY is clear else ……..
class Acer // Jacobian Code end Acer.class > Class Acer.superclass > Object Class.superclass> Module 2.class > Fixnum 2.988888.class > Float -2.class > Fixnum "2".class > String 0x22.class > Fixnum Class.class > Class nil.class > NilClass self.class > Object Object.class > Class Object.type > Class Time.class > Class Time.now.class > Time
Add comment April 6, 2008
strongly typed language
Statically typed language :: the type of a variable can not be altered.
int x;
x = 420;
x = “Mr. Bechara”; # Error
Dynamically typed language :: the type of a variable can be altered at any time.
x = 420
x = “Common I am a good person”
x = :intelligent_person
x = /regular ex form/
Strongly typed language :: strict about what you can do with your typed variables.
On mixing, it will see I am hugging a beauty or a bitch.
You smells like a rose
x = “14″
y = x + “February” #”14February“
The stinking ….
x = “Decemebr”
y = x + 1 # Error
Weakly typed language ::play a show definitely for your typed variable. I meant for lust not love.
x = myfunction_returns_5();
y = x + 1 // Ya give me 6 , damn!! it has given me 51
Ruby : Dynamically, strongly
Javascript : Dynamically, weakly
C,C++ : Statically
Add comment April 5, 2008
blank,empty and nil in Ruby
Object.blank?
Returns true if:
> it’s an empty array
> it’s an empty string
> !self evaluates to true
[].blank? #=> true
[1].blank? #=> false
[nil].blank? #=> false
nil.blank? #=> true
true.blank? #=> false
false.blank? #=> true
"".blank? #=> true
" ".blank? #=> true
" i ".blank? #=> false
String.empty?
"hello".empty? #=> false
"".empty? #=> true
Array.empty?
[].empty? #=> true
Hash.empty?
{}.empty? #=> true
NilClass.nil?
nil.nil? => true
Object.nil?
nil.nil? => true
.nil? => false
nil.inspect ? "nil"
Add comment April 5, 2008
Instant Ruby Shell
Hey RoRists;
Yes I say them terRoRists(Technical terrorists).
Online “Interactiver Ruby Shell” [online irb] for you and you only. Dont bother whether Ruby is installed or not, while surfing to cafe or you are enjoying with your friend’s laptop.
Doubtful with ruby methods or syntax, clear it in air.
Your instant ruby shell:
http://tryruby.hobix.com/
Add comment March 22, 2008

