Flash Message Conductor now a Gem
6 comments Latest by replica pandora jewelryre Thu, 11 Mar 2010 06:22:40 GMT
We’ve been doing some early (or late… if you’re a half-full kind of person) spring cleaning on some of our projects. One of the small projects, flash_message_conductor, which we released last year as a plugin is now a gem. We’ve been moving away from using plugins in favor of gems as we like locking in specific released versions and being able to specify them in our environment.rb file is quite convenient.
To install, just run the following:
sudo gem install flash-message-conductor --source=http://gemcutter.org
Successfully installed flash-message-conductor-1.0.0
1 gem installed
Installing ri documentation for flash-message-conductor-1.0.0...
Installing RDoc documentation for flash-message-conductor-1.0.0...
You’ll then just need to include the following in your config/environment.rb file.
Rails::Initializer.run do |config|
# ...
config.gem 'flash-message-conductor', :lib => 'flash_message_conductor', :source => "http://gemcutter.org"
endYou can take a peak at the README for usage examples.
We’ll be packaging up a handful of our various plugins that we reuse on projects and moving them to gems. Stay tuned… :-)
Get to know a gem: Ghost
16 comments Latest by Endep Fri, 19 Feb 2010 12:55:04 GMT
In my last post, Subdomain accounts with Ruby on Rails explaind, I mentioned that you’d need to modify your /etc/hosts file to use custom subdomains for development/testing. Apparently, there is a much better way to handle this that I was introduced to by Nathan de Vries. Nathan suggests using a gem that I hadn’t heard of before that bares the name of Ghost (view project on github).
Ghost describes itself as…
“A gem that allows you to create, list, and modify local hostnames in 10.5 with ease⦔—
If you’ve ever had to modify your /etc/hosts file for anything local, I highly encourage you to check out this shiny gem.
Installing Ghost
Like most gems, you can just install Ghost with the following command.
~ : sudo gem install ghost
Password:
Successfully installed ghost-0.1.2-universal-darwin-9
1 gem installed
Installing ri documentation for ghost-0.1.2-universal-darwin-9...
Installing RDoc documentation for ghost-0.1.2-universal-darwin-9...
Okay, now that Ghost is installed, let’s see what we can do with it.
Using Ghost for local domains/subdomains
Ghost is fairly straight forward. It’s essentially a friendly wrapper for dscl, which is the Directory Service command line utility for Mac OS X. I’ve never played with that directly, but it seems that with Ghost… I shouldn’t need to. :-)
With Ghost, you can add, modify, and delete entries in the Directory Service by issuing any of the following commands. Let’s start out by running ghost to see what we have here.
~ : ghost
USAGE: ghost add <hostname> [<ip=127.0.1.1>]
ghost modify <hostname> <ip>
ghost delete <hostname>
ghost list
ghost empty
Okay, let’s see if there is anything already listed.
~ : ghost list
Listing 0 host(s):
Nope. Let’s test this out. First, we’ll try to ping a domain name that we hope doesn’t exist.
~ : ping bigbrown.cow
ping: cannot resolve bigbrown.cow: Unknown host
Alright, now we’ll add bigbrown.cow with ghost.
~ : ghost add bigbrown.cow
Password:
[Adding] bigbrown.cow -> 127.0.0.1
As you can see, it required root credentials to do this as it’s system-wide. Let’s now see if we can talk to bigbrown.cow.
~ : ping bigbrown.cow
PING bigbrown.cow (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.047 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.035 ms
^C
--- bigbrown.cow ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.035/0.041/0.047/0.006 ms
Excellent! If we run ghost list again, we should see this record.
~ : ghost list
Listing 1 host(s):
bigbrown.cow -> 127.0.0.1
We can modify the record to a non-localhost IP as well with ghost modify.
~ : ghost modify bigbrown.cow 192.168.10.104
[Modifying] bigbrown.cow -> 192.168.10.104
~ : ghost list
Listing 1 host(s):
bigbrown.cow -> 192.168.10.104
I’ll let you play with it yourself as there isn’t much to it. This is a great little addition to my development environment. Thanks to Nathan for pointing it out and to Bodaniel Jeanes for creating this useful gem.
The HTTParty has just begun
4 comments Latest by Trevor Turk Thu, 04 Dec 2008 06:21:25 GMT
After releasing the new RubyURL API, I decided that it was time to look around at libraries to interact with it. I came across a new Ruby gem from John Nunemaker named, HTTParty, which aims to make it easy to talk to XML and JSON-based web services. Be sure to read John’s announcement of HTTParty.
So, I decided it might be fun to introduce more people to the gem by showing you all how to use it to talk to the new RubyURL API.
Install HTTParty
Before we get started, you’ll need to install the HTTParty gem with the following command:
~ : sudo gem install httparty
Password:
When you HTTParty, you must party hard!
Successfully installed httparty-0.1.6
1 gem installed
Installing ri documentation for httparty-0.1.6...
Installing RDoc documentation for httparty-0.1.6...
Great! Now that we’re ready to party hard, let’s build something.
Talking to the RubyURL API
The RubyURL API currently supports both XML and JSON, which are each supported by HTTParty. The great thing about HTTParty is that all you need to do is include it in a class and you’re able to quickly talk to remote services.
In this following example, we’re going to create a new class called Rubyurl.
class Rubyurl
endWhat we’ll want to do now is include the HTTParty library. (note: you’ll need to require both rubygems and httparty gems and I’ll skip those lines in following code samples)
class Rubyurl
include HTTParty
endThe HTTParty provides a few class methods, which we can use to configure our library. We’ll go ahead and specify the base_uri, which we’ll set to rubyurl.com.
class Rubyurl
include HTTParty
base_uri 'rubyurl.com'
endNow that our class is setup to talk to the Rubyurl.com site, we’ll want to add a new method which we can use to communicate with the RubyURL API. We’ll call this shorten as we’re using RubyURL to shorten long URLs… right?
class Rubyurl
include HTTParty
base_uri 'localhost:3000'
def self.shorten( website_url )
end
endOur new shorten method will expect us to provide it with a website url, which we’ll want RubyURL to return a shortened URL for. The PATH for the API that we’ll want to talk to is: /api/links, which we’re expected to pass XML or JSON to.
Here are two examples of using the RubyURL API with HTTParty.
RubyURL via JSON w/HTTParty
We’re going to use the post method that is provided with HTTParty to send a request to /api/links.json. As you can see, we’re providing the original website url to the web service.
class Rubyurl
include HTTParty
base_uri 'rubyurl.com'
def self.shorten( website_url )
post( '/api/links.json', :query => { :link => { :website_url => website_url } } )
end
endWhen ran, it’ll produce the following:
>> Rubyurl.shorten( 'http://github.com/jnunemaker/httparty/tree/master/lib/httparty.rb' ).inspect
=> {"link"=>{"permalink"=>"http://rubyurl.com/uJVu", "website_url"=>"http://github.com/jnunemaker/httparty/tree/master/lib/httparty.rb"}}Pretty simple, eh?
RubyURL via XML w/HTTParty
The great thing about HTTParty is that you can use XML without changing much.
class Rubyurl
include HTTParty
base_uri 'rubyurl.com'
def self.shorten( website_url )
post( '/api/links.xml', :query => { :link => { :website_url => website_url } } )
end
endProduces the following
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<link>
<website_url>http://github.com/jnunemaker/httparty/tree/master/lib/httparty.rb</website_url>
<permalink>http://rubyurl.com/uJVu</permalink>
</link>Closing thoughts
So… there you have it. HTTParty makes it extremely easy to interact with various web services that work over HTTP. I’d encourage you all to take a few minutes to experiment with it and see what crazy ideas that come to mind during the process. :-)
ShortURL on Github
4 comments Latest by abercrombie clothes Wed, 17 Mar 2010 07:08:23 GMT
After noticing a few patch requests on Rubyforge.. I decided that I’d put the ShortURL gem up on GitHub as I spend quite a bit of my time there these days. :-)
I’ve also thrown up a few lines of code so that you can get the gist of the gem. ;-)
ShortURL 0.8.4 released and gets a new mainainer... me!
3 comments Latest by abercrombie clothes Wed, 17 Mar 2010 07:15:14 GMT
Earlier today, Vincent Foley was kind enough to hand over maitenance of the the ShortURL project on RubyForge to me. He first released it back in 2005, which I blogged about as RubyURL was the first shortening service that it supported (and is the default). Unfortunately, the release of RubyURL 2.0 broke backwards compatibility and Vincent wasn’t maintaining it anymore. So, earlier, I decided to patch this and got a new version released that now works with the current RubyURL site.
While working on the code, I decided to extend the compatible services to include moourl and urlTea.
These updates are available in ShortURL version 0.8.4.
Install the ShortURL gem
Installation is a snap… (like 99.7% of rubygems…)
~ > sudo gem install shorturl Password:
Successfully installed shorturl-0.8.4
1 gem installed
Installing ri documentation for shorturl-0.8.4...
Installing RDoc documentation for shorturl-0.8.4.
Using ShortURL
The ShortURL gem provides the ShortURL library, which you can use from any Ruby application.
Using the ShortURL library
~ > irb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'shorturl'
=> true
irb(main):003:0> ShortURL.shorten( 'http://www.istwitterdown.com' )
=> "http://rubyurl.com/P9w"
As you can see…it’s really straight forward.
Let’s try it with a few other services.
irb(main):004:0> ShortURL.shorten( 'http://www.istwitterdown.com', :moourl )
=> "http://moourl.com/fvoky"
irb(main):005:0> ShortURL.shorten( 'http://www.istwitterdown.com', :tinyurl )
=> "http://tinyurl.com/2t3qmh"
Using the shorturl command-line tool
Many people don’t know that ShortURL provides a command-line tool, which you can use after installing the gem.
~ > shorturl http://istwitterdown.com
http://rubyurl.com/Lwk
If you’d like to see more services provided than the ones listed here, please submit feature requests and/or patches on the rubyforge project.
ShortURL Documentation
To see the latest documentation for the project, please visit:
My favorite part about this? My rbot plugin for RubyURL works again!
Happy URL-shortening!
Meet the Cheat
2 comments Latest by pozycjonowanie Mon, 24 Sep 2007 13:05:10 GMT
Hey! You’re a cheater!
Well, if you’re not… I’m hoping to make one out of you.
“A thing worth having is a thing worth cheating for.”—W. C. Fields
I’m a fan of the PDF cheat sheets as I like the consolidated content contained in them. However, I don’t like having to read PDFs any more than I have to. Printing them isn’t always ideal either as I really don’t like to carry around extra paper in my laptop bag. So, what are we to do?
Well, you can cheat the system! ...and I’m going to show you how!
Cheat is this really nice command-line tool that outputs a plain text cheat sheet whenever and wherever you want.
Install the Cheat
Like all the happy and good Rubygems, this is quite simple…
$ sudo gem install cheat
Done! Okay… let’s try to do some cheating. Don’t worry, your friends and family will forgive you.
Becoming a Cheat(er)
To view a cheat sheet, just run the cheat command from your favorite terminal window.
$ cheat _cheat name_
So, for example… to see the cheat sheet for RSpec, run cheat rspec.
$ cheat rspec
rspec:
INSTALL
=======
$ sudo gem install rspec
$ ./script/plugin install
svn://rubyforge.org/var/svn/rspec/tags/REL_X_Y_Z/vendor/rspec_on_rails/vendor/p
ugins/rspec
Where X_Y_Z is the version number.
$ ./script/generate rspec
create spec
create spec/spec_helper.rb
create spec/test2spec.erb
create test/test2spec_help.rb
create script/rails_spec
create script/rails_spec_runner
HOW TO USE
==========
./script/generate rspec_model User
####################################################
# truncated to save precious bandwidth
####################################################
Because this is all printing out in your shell, you can take advantage of your favorite command line tools.
Piping to grep
$ cheat rspec | grep 'equal'
@user.errors.on(:username).should_equal "is required"
target.should_equal <value>
target.should_not_equal <value>
Piping to TextMate
$ cheat rspec | mate
Find more Cheats
Head over to this list of cheats to see what is currently available.
Thanks to the Err team for putting this together!






