CopyCat Rails’ Time Extensions
I've become a fan of Ruby's simple syntax. My favorite thing is the ActiveSupport's Numeric Time Extensions. I'm starting a library of useful extensions, and I'm going to be adding a number of shortcuts to mock these extensions.
For those of you that don't want to follow the link, check out the syntax:
# equivalent to Time.now.advance(:months => 1) 1.month.from_now # equivalent to Time.now.advance(:years => 2) 2.years.from_now # equivalent to Time.now.advance(:months => 4, :years => 5) (4.months + 5.years).from_now
Here is what I've gotten so far (it only includes int for now):
public static class DateExtensionsThatMockRuby
{
/// <summary>
/// Retrieve the number of ticks for x Days.
/// <example>long ticks = 5.Days();</example>
/// </summary>
/// <param name="i"></param>
/// <returns>ticks</returns>
public static long Days(this int i)
{
return new TimeSpan(i, 0, 0, 0).Ticks;
}
/// <summary>
/// Retrieve the number of ticks for x Hours.
/// </summary>
/// <example>long ticks = 15.Hours();</example>
/// <param name="i"></param>
/// <returns>ticks</returns>
public static long Hours(this int i)
{
return new TimeSpan(0, i, 0, 0).Ticks;
}
/// <summary>
/// Retrieve the number of ticks for x Minutes
/// </summary>
/// <example>long ticks = 97.Minutes();</example>
/// <param name="i"></param>
/// <returns>ticks</returns>
public static long Minutes(this int i)
{
return new TimeSpan(0, i, 0).Ticks;
}
/// <summary>
/// Retrieve the number of ticks for x Seconds
/// </summary>
/// <example>long ticks = 3000.Seconds();</example>
/// <param name="i"></param>
/// <returns>ticks</returns>
public static long Seconds(this int i)
{
return new TimeSpan(0, 0, i).Ticks;
}
/// <summary>
/// Retrieve the number of ticks for x Milliseconds
/// </summary>
/// <example>long ticks = 3000.Milliseconds();</example>
/// <param name="i"></param>
/// <returns>ticks</returns>
public static long Milliseconds(this int i)
{
return new TimeSpan(0, 0, 0, 0, i).Ticks;
}
/// <summary>
/// Retrieve a DateTime object from ticks
/// <example>DateTime dt = 236423690923466.AsDateTime();</example>
/// /// <example>DateTime dt = 10.Days().AsDateTime();</example>
/// </summary>
/// <param name="ticks"></param>
/// <returns>DateTime</returns>
public static DateTime AsDateTime(this long ticks)
{
return new DateTime(ticks);
}
/// <summary>
/// Retrieve a DateTime object from ticks
/// <example>DateTime dt = 236423690923466.AsDateTime(DateTimeKind.Utc);</example>
/// /// <example>DateTime dt = 10.Days().AsDateTime(DateTimeKind.Utc);</example>
/// </summary>
/// <param name="ticks"></param>
/// <returns>DateTime</returns>
public static DateTime AsDateTime(this long ticks, DateTimeKind kind)
{
return new DateTime(ticks, kind);
}
}
Ruby and Python in your script tags!
I came across this weeks ago, and I'm surprised I never posted it. This is a javascript 'framework' to add ruby and python languages in your script tags. It's a pretty awesome idea. I haven't really tested it out, but it's worth taking a look at:
Example Ruby code
I decided to do some of those Facebook puzzles in Ruby. I won't post everything I do, because I would consider that cheating (after all, you can win prizes!).
However, considering this is a very simple script, and I'm doing it more for learning Ruby than to enter into Facebook's puzzles, I will post this one.
This is the first puzzle, called Hoppity Hop:
private
@file_exists = false
def get_integer(filename)
if File::exists?(filename)
file = File.open(filename)
line = file.gets.strip!
file.close
@file_exists = true
return line.to_i
else
@file_exists = false
return 0 #zero files present
end
end
def get_string(num)
if(num%3 == 0 && num%5 == 0)
print "Hop\n"
elsif num%3 == 0
print "Hoppity\n"
elsif num%5 == 0
print "Hophop\n"
else
return #nothing
end
end
def hip_hop(arg)
num = get_integer(arg)
if(num > 0 && @file_exists)
for i in 1..num.to_i
get_string(i)
end
else
puts "File not found"
end
end
public
arg = ARGV[0].to_s # this is the name of the file
if(/\D/ =~ arg)
puts "Please enter a positive integer as the filename."
else
unless arg == nil
hip_hop(arg)
end
end
Ruby on Rails, Aptana Studio
This weekend, I decided to give Ruby on Rails a go, considering I just finished school and I'll have plenty of free time to explore.
Hello, I just thought I'd post something as I had the same problem on Windows.
I tried running the command "gem install rails --source http://gem.rubyonrails.org" but I received the error: "actionpack requires rack (>= 0.9.0, runtime)"
So I ran "gem install rack" which installed something
And then "gem install rails --source http://gem.rubyonrails.org" and it installed 2.3.0 just fine.
Based on this post: http://railsforum.com/viewtopic.php?pid=89050
I also changed my rails version in environment.rb to "2.3.0" and renamed "application.rb" to "application_controller.rb" and everything is working. Thanks a bunch for the info!
