Code Monkey home page Code Monkey logo

earthquake's Introduction

Earthquake

Terminal-based Twitter Client with Streaming API support. Only supports Ruby 1.9 and later.

Homepage: https://github.com/jugyo/earthquake
Twitter: http://twitter.com/earthquakegem
Changelog'd: earthquake: Twitter terminal client with streaming API support
Demo: http://www.youtube.com/watch?v=S2KtBGrIe5c
Slide: http://www.slideshare.net/jugyo/earthquakegem

We need patches that fix the english of the documentation!

http://images.instagram.com/media/2011/03/21/862f3b8d119b4eeb9c52e690a0087f5e_7.jpg

Features

  • Use Twitter entirely in your Terminal.
  • Receive data in real time with Streaming API.
  • Easily extend using Ruby.

Install

Quick-installation using Docker (http://docker.io)

Just clone the repo and:

$ docker build -t earthquake . --build-arg TZ='Asia/Tokyo'
$ docker run --rm -v $HOME/.earthquake:/root/.earthquake -it earthquake

Launch with options:

$ docker run -v $HOME/.earthquake:/root/.earthquake -it earthquake --no-stream --no-logo

Normall installation

You'll need openssl and readline support with your 1.9.2. If you are using rvm you can run:

$ rvm pkg install openssl
$ rvm pkg install readline
$ rvm remove 1.9.2
$ rvm install 1.9.2 --with-openssl-dir=$HOME/.rvm/usr \
  --with-readline-dir=$HOME/.rvm/usr

Then install the gem:

$ gem install earthquake

Ubuntu: EventMachine needs the package libssl-dev.

$ sudo apt-get install libssl-dev

Command-Line Usage

Launch

$ earthquake

Help

⚡ :help

Tweet

⚡ Hello World!

Show

⚡ $xx

$xx is the alias of tweet id.

Reply

⚡ $xx hi!

Delete

⚡ :delete $xx

Retweet

⚡ :retweet $xx

Timeline

⚡ :recent
⚡ :recent jugyo

Lists

⚡ :recent yugui/ruby-committers

Search

⚡ :search #ruby

Eval

⚡ :eval Time.now

Exit

⚡ :exit

Reconnect

⚡ :reconnect

Restart

⚡ :restart

Threads

⚡ :thread $xx

Install Plugins

⚡ :plugin_install https://gist.github.com/899506

Alias

⚡ :alias :rt :retweet

Tweet Ascii Art

⚡ :update[ENTER]
[input EOF (e.g. Ctrl+D) at the last]
    ⚡
   ⚡
    ⚡
   ⚡
^D

View Ascii Art

# permanently
⚡ :eval config[:raw_text] = true

# temporarily(with :status, :recent or :thread etc...)
⚡ :aa :status $aa

Stream Filter Tracking

# keywords
⚡ :filter keyword earthquakegem twitter

# users
⚡ :filter user jugyo matsuu

# return to normal user stream
⚡ :filter off

Show config

# All config
⚡ :config

# config for :key
⚡ :config key

Set config

# set config for :key to (evaluated) value
⚡ :config key 1 + 1
{
    :key => 2
}
⚡ :config key {foo: 1, bar: 2}
{
    :key => {
        :foo => 1,
        :bar => 2
    }
}
# merge new config if both are Hash
⚡ :config key {bar: 3}
{
    :key => {
        :foo => 1,
        :bar => 3
    }
}

And more!

Configuration

The default earthquake directory is ~/.earthquake.

The config file is ~/.earthquake/config.

Changing the earthquake directory

You can change the directory at launch by entering a directory as an argument. For example:

$ earthquake ~/.earthquake_foo

Changing the colors for user name

# ~/.earthquake/config
# For example, to exclude blue:
Earthquake.config[:colors] = (31..36).to_a - [34]

Changing the color scheme

# ~/.earthquake/config
Earthquake.config[:color] = {
  :info => 34,
  :notice => 41,
  :event  => 46,
  :url => [4, 34]
}

Tracking specified keywords

# ~/.earthquake/config
Earthquake.config[:api] = {
  :method => 'POST',
  :host => 'stream.twitter.com',
  :path => '/1/statuses/filter.json',
  :ssl => true,
  :filters => %w(Twitter Earthquake)
}

Tracking specified users

# ~/.earthquake/config
Earthquake.config[:api] = {
  :method => 'POST',
  :host => 'stream.twitter.com',
  :path => '/1/statuses/filter.json',
  :ssl => true,
  :params => {
    :follow => '6253282,183709371' # @twitterapi @sitestreams
  }
}

Defining aliases

# ~/.earthquake/config
Earthquake.alias_command :rt, :retweet

Default confirmation type

# ~/.earthquake/config
Earthquake.config[:confirm_type] = :n

HTTP proxy support

Please set environment variable http_proxy if you want earthquake to use an http proxy.

Desktop Notifications

To enable desktop notifications, install one of the following:

Call Earthquake.notify for desktop notification. You can try it by using the :eval command:

⚡ :eval notify 'Hello World!'

Plugins

See https://github.com/jugyo/earthquake/wiki

Making Plugins

~/.earthquake/plugin is the directory for plugins. At launch, Earthquake tries to load files under this directory. The block that is specified for Earthquake.init will be reloaded at any command line input.

Defining your commands

A command named 'foo':

Earthquake.init do
  command :foo do
    puts "foo!"
  end
end

Handling the command args:

Earthquake.init do
  command :hi do |m|
    puts "Hi #{m[1]}!"
  end
end

'm' is a http://www.ruby-doc.org/core/classes/MatchData.html object.

Using regexp:

Earthquake.init do
  # Usage: :add 10 20
  command %r|^:add (\d+)\s+(\d+)|, :as => :add do |m|
    puts m[1].to_i + m[2].to_i
  end
end

Handling outputs

Keyword notifier:

Earthquake.init do
  output do |item|
    next unless item["_stream"]
    if item["text"] =~ /ruby/i
      notify "#{item["user"]["screen_name"]}: #{item["text"]}"
    end
  end
end

Favorite notifier:

Earthquake.init do
  output do |item|
    case item["event"]
    when "favorite"
      notify "[favorite] #{item["source"]["screen_name"]} => #{item["target"]["screen_name"]} : #{item["target_object"]["text"]}"
    end
  end
end

Defining filters for output

Filtering by keywords

Earthquake.init do
  output_filter do |item|
    if item["_stream"] && item["text"]
      item["text"] =~ /ruby/i
    else
      true
    end
  end
end

Replacing the output for tweets

Earthquake.init do
  output :tweet do |item|
    next unless item["text"]
    name = item["user"]["screen_name"]
    puts "#{name.c(color_of(name))}: foo"
  end
end

Defining completion

Earthquake.init do
  completion do |text|
    ['jugyo', 'earthquake', '#eqrb'].grep(/^#{Regexp.quote(text)}/)
  end
end

TODO

  • mark my tweet
  • Earthquake should parse ARGV
  • ruby1.9nize
  • guideline for plugin
  • deal proxy
  • spec

Copyright

Copyright (c) 2011 jugyo. See LICENSE.txt for further details.

earthquake's People

Contributors

achiurizo avatar adamzap avatar agorf avatar authornari avatar babie avatar bemurphy avatar bovi avatar danishkhan avatar dmondark avatar eitoball avatar esotericaone avatar frasertweedale avatar ikegam avatar jandudulski avatar jhsu avatar jivey avatar jkraemer avatar jugyo avatar katmutua avatar matsuu avatar mattn avatar milligramme avatar mrkn avatar no6v avatar oieioi avatar phlogistique avatar takkaw avatar yohfee avatar youpy avatar zellux avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

earthquake's Issues

bundler install error in v0.8.5

using ruby 1.9.3-p0, bundler 1.1rc.7
when bundle install, get following message.

$ bundle install

Fetching gem metadata from http://rubygems.org/.
Unfortunately, the gem earthquake (0.8.1) has an invalid gemspec. As a result, Bundler cannot install this Gemfile. Please ask the gem author to yank the bad version to fix this issue. For more information, see http://bit.ly/syck-defaultkey.

Earthquake doesn't refresh automatically

I'm using ruby-1.9.2-p290 and latest earthquake.gem

When I start it, it logs in successfully - I can get recent tweets with :recent command and post updates.

Unfortunately the app doesn't refresh automatically (as it can be seen here )

I tried to debug it myself, but I couldn't find any obvious reasons as to why it wouldn't work

oauth flow broken :(

Just installed fresh. Everything works until I enter the PIN and it tells me it got a 401 Unauthorized. Sad panda. Tried multiple times, copy-pasting the PIN as well.

Trending Topic support

Is there any plan on support trending topic?

I have made some commands for myself but I'm not sure how to make the UX consistent with the rest of the app.

cannot start with an optional directory

I'm using two accounts on earthquake.gem. The main account works good, but cannot start with an optional directory for another account.

$ ruby bin/earthquake ~/.earthquake-another
[main account]⚡ 

It seems that command line options are not reflected properly.

unexpected token error on some retweets

I'll look into this later, but I imagine the fact that it's an XML document and there are errors coming from the JSON parser might have something to do with it. ;^)

TrevorBramble⚡ :retweet $ao
retweet 'RT @defunkt: best diff ever: https://github.com/sstephenson/everyjs.com/commit/a993a3bcbc' [Yn]
TrevorBramble⚡ [ERROR] 706: unexpected token at '

<title>Twitter / Over capacity</title>
<style type="text/css">
  /* Page
  ----------------------------------------------- */
  * { border: 0; padding: 0; margin: 0; }
  body{ margin: 10px 0; background:#C0DEED url(//si0.twimg.com/sticky/error_pages/bg-clouds.png) repeat-x; color:#333; font: 12px Lucida Grande, Arial, sans-serif; text-align:center }
  #container { width: 755px; margin: 0 auto; padding: 0px 0; text-align: left; position: relative; }
  #content { width: 100%; margin-top: 0px; float: left; margin-top: 8px; padding-bottom: 15px; background: transparent url(//si0.twimg.com/sticky/error_pages/arr2.gif) no-repeat scroll 25px 0px;}
  .subpage #content .wrapper { background-color: #fff;  padding: 10px 0px 10px 0px; -moz-border-radius: 5px 5px 0 0; -webkit-border-radius: 5px; -webkit-border-bottom-left-radius: 0px; -webkit-border-bottom-right-radius: 0px;}
  .subpage #content h2 { margin: 8px 20px 5px 20px; font: bold 26px Helvetica Neue, Helvetica, Arial, sans-serif; }
  .subpage #content p { margin: 0 20px 10px 20px; color: #666; font-size: 13px;}
  .subpage #content ul { padding-left: 30px; }
  .subpage #content ol, #side ol { padding-left: 30px; }
  a{text-decoration:none;color: #0084b4;}
  #content div.desc { margin: 11px 0px 10px 0px; }
  a img{border:0;}
  a:hover { text-decoration: underline;}
  ul{list-style:square;padding-left:20px;}
  div.error { width: 100%; text-align: center; margin: 0px 0;}

  /* Navigation
  ----------------------------------------------- */
  #navigation { background-color: #fff; position: absolute; top: 8px; right: 0; padding: 6px 6px; font-size: 13px; text-align: center; }
  #navigation ul { margin: 0; padding: 0px; width: auto; height: 100%; _width: 60px;}
  #navigation li { display:inline; padding: 0 5px; }
  #navigation li:before { content: ' '; padding-right: 0; }
  #navigation li.first:before { content: ''; padding-right: 0; }
  #navigation, #footer { -moz-border-radius: 5px;-webkit-border-radius: 5px;}

  /* Footer
  ----------------------------------------------- */
  #footer { clear: left; width: 555px; text-align: left; padding: 0px 0; font-size: 11px; color: #778899;}
  #footer ul { clear: both; display: block;}
  #footer li { display: block; float: left; margin: 0 16px 0 0;}
  #footer li.first:before { content: ''; padding-right: 0; }
  #languages li { margin-bottom: 25px; font-size: 12px; width: 14%; text-align: center; }

</style>

Twitter.com

Twitter is over capacity.

Please wait a moment and try again. For more information, check out Twitter Status »

gem earthquake (0.8.1) has an invalid gemspec

Hello,

trying to get a bundled development environment on OSX Snow Leopard

jmettraux@sanma ~/w 秋 git clone https://github.com/jugyo/earthquake.git
Cloning into earthquake...
remote: Counting objects: 2196, done.
remote: Compressing objects: 100% (981/981), done.
remote: Total 2196 (delta 1251), reused 2071 (delta 1135)
Receiving objects: 100% (2196/2196), 220.72 KiB | 114 KiB/s, done.
Resolving deltas: 100% (1251/1251), done.
jmettraux@sanma ~/w 秋 cd earthquake/
jmettraux@sanma ~/w/earthquake (master) 秋 rvm use 1.9.3-p125
Using /Users/jmettraux/.rvm/gems/ruby-1.9.3-p125
jmettraux@sanma ~/w/earthquake (master) 秋 gem -v
1.8.21
jmettraux@sanma ~/w/earthquake (master) 秋 bundle -v
Bundler version 1.1.3
jmettraux@sanma ~/w/earthquake (master) 秋 bundle install
Fetching gem metadata from http://rubygems.org/.
Unfortunately, the gem earthquake (0.8.1) has an invalid gemspec.
As a result, Bundler cannot install this Gemfile.
Please ask the gem author to yank the bad version to fix this issue.
For more information, see http://bit.ly/syck-defaultkey.

I looked at http://bit.ly/syck-defaultkey and tried to upgrade my RubyGems, but still having the issue with 1.8.21 (as seen above).

@jugyo さん, what about yanking 0.8.1 ? It seems I'm not the only one to have seen that issue: https://twitter.com/#!/sora_h/statuses/177977121510141952

If there is an easier work around, please tell me.

Unable to launch. No Browser application found.

When first running on an Ubuntu server (without X installed), it throws a RuntimeError when attempting to open the system browser and does not prompt for the PIN (even on subsequent runs).

Output:

$ earthquake
1) open: http://api.twitter.com/oauth/authorize?oauth_token=QiYjJJOrCcY3c1RXFG0TZInET5jS2e0oyYBFi2Ns
Unable to launch. No Browser application found.
/home/oshuma/.rvm/gems/ruby-1.9.2-p136@earthquake/gems/launchy-0.4.0/lib/launchy/browser.rb:41:in `initialize': Unable to find browser to launch for os family 'nix'. (RuntimeError)
        from /home/oshuma/.rvm/gems/ruby-1.9.2-p136@earthquake/gems/launchy-0.4.0/lib/launchy/browser.rb:21:in `new'
        from /home/oshuma/.rvm/gems/ruby-1.9.2-p136@earthquake/gems/launchy-0.4.0/lib/launchy/browser.rb:21:in `run'
        from /home/oshuma/.rvm/gems/ruby-1.9.2-p136@earthquake/gems/earthquake-0.5.8/lib/earthquake/get_access_token.rb:12:in `get_access_token'
        from /home/oshuma/.rvm/gems/ruby-1.9.2-p136@earthquake/gems/earthquake-0.5.8/lib/earthquake/core.rb:69:in `load_config'
        from /home/oshuma/.rvm/gems/ruby-1.9.2-p136@earthquake/gems/earthquake-0.5.8/lib/earthquake/core.rb:35:in `_init'
        from /home/oshuma/.rvm/gems/ruby-1.9.2-p136@earthquake/gems/earthquake-0.5.8/lib/earthquake/core.rb:84:in `start'
        from /home/oshuma/.rvm/gems/ruby-1.9.2-p136@earthquake/gems/earthquake-0.5.8/bin/earthquake:13:in `'
        from /home/oshuma/.rvm/gems/ruby-1.9.2-p136@earthquake/bin/earthquake:19:in `load'
        from /home/oshuma/.rvm/gems/ruby-1.9.2-p136@earthquake/bin/earthquake:19:in `'

I'll try to work up a fix for this shortly.

Issues with SSL/Curl/OSX Lion

I'm having an issue where SSL certs aren't being accepted during plugin installs on OSX. I don't have enough knowledge of Ruby or how it uses curl natively (or if it even does) to fix this properly, but passing the following to all of your open() calls to https:// allows me to at least do what you're attempting to do.

:ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE

I am sure there is a much nicer way to do this, but it certainly permits the desired behaviour.

block via $xx reference

Would be good to be able to block/report_spam someone using their message-reference. easier to type it, that to type username

Feature Request: "help <command name>"

Provide contextual help about a particular command, simply the information of what parameter is expected (type, where to find it, etc...) even if it seems obvious ;)

error: invalid status code: 401

I've got earthquake installed according to the install instructions for rvm (I'm on gentoo). I'm able to manually get tweets by using :recent but it seems streaming doesn't work. When I launch, I get a notification saying: error: invalid status code: 401 along with: reconnecting in: 10 seconds

I'll then get the reconnecting error message every so often after that. I tried running in debug mode, but none of the program switches seem to do anything, they just leave me in the program prompt and seem to do nothing.

Can't connect

It looks like an EventMachine/SSL problem, somewhat related to this issue.

So I made a little change to ext.rb:

diff --git a/lib/earthquake/ext.rb b/lib/earthquake/ext.rb                           
index 7a8a00d..c6cd966 100644                                                        
--- a/lib/earthquake/ext.rb                                                          
+++ b/lib/earthquake/ext.rb                                                          
@@ -5,12 +5,12 @@ module Twitter                                                     
       @reconnect_callback.call(timeout, @reconnect_retries) if @reconnect_callback  

       if timeout == 0                                                               
-        reconnect @options[:host], @options[:port]                                  
         start_tls if @options[:ssl]                                                 
+        reconnect @options[:host], @options[:port]                                  
       else                                                                          
         EventMachine.add_timer(timeout) do                                          
-          reconnect @options[:host], @options[:port]                                
           start_tls if @options[:ssl]                                               
+          reconnect @options[:host], @options[:port]                                
         end                                                                         
       end                                                                           
     end                                                                             

(before that earthquake would just crash with the same error as in the mentioned EM issue)

...and now I get this:

 │vagrant > lukasz: bin/earthquake [ruby-1.9.3@earthquake]  master ~/Projects/earthquake              
 │                 _   _                       _                                                      
 │  ___  __ _ _ __| |_| |__   __ _ _   _  __ _| | _____                                               
 │ / _ \/ _` | '__| __| '_ \ / _` | | | |/ _` | |/ / _ \                                              
 │|  __/ (_| | |  | |_| | | | (_| | |_| | (_| |   <  __/                                              
 │ \___|\__,_|_|   \__|_| |_|\__, |\__,_|\__,_|_|\_\___|                                              
 │                              |_|               v0.9.0                                              
 │                                                                                                    
 │1) open:                                                                                            
 https://api.twitter.com/oauth/authorize?oauth_token=csNTygR3B5ow8bT4QllWseqLAOABbqmyU9NeGpvcw        
 │Failure in opening                                                                                  
 https://api.twitter.com/oauth/authorize?oauth_token=csNTygR3B5ow8bT4QllWseqLAOABbqmyU9NeGpvcw        
 with                                                                                                 
 │options {}: Unable to find a browser command. If this is unexpected, Please                         
 rerun with environment variable LAUNCHY_DE                                                           
 │BUG=true or the '-d' commandline option and file a bug at                                           
 https://github.com/copiousfreetime/launchy/issues/new                                                
 │2) Enter the PIN: 6174205                                                                           
 │Saving 'token' and 'secret' to '/home/lukasz/.earthquake/config'                                    
 │⚡ earthquake: error: invalid status code: 401.                                                      
 │earthquake: reconnecting in: 10 seconds                                                             
 │earthquake: reconnecting in: 20 seconds                                                             
 │earthquake: reconnecting in: 40 seconds                                                             
 │earthquake: reconnecting in: 80 seconds                                                             
 │earthquake: reconnecting in: 160 seconds                                                            
 │earthquake: reconnecting in: 320 seconds                                                            

OS: Debian Squeeze
Ruby 1.9.3 and 1.9.2
Earthquake version 0.8.5 and up

Uncaught Exception when server is down

Seems like twitter was having some server problems, and earthquake crashed when I tried to post an update.
I'm on revision 13b8f29.

⚡ [ERROR] 743: unexpected token at '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Language" content="en-us" />
    <title>Twitter / Error</title>
    <link href="//si0.twimg.com/sticky/error_pages/favicon.ico" rel="shortcut icon" type="image/x-icon" />

    <style type="text/css">
      /* Page
      ----------------------------------------------- */
      * { border: 0; padding: 0; margin: 0; }
      body{ margin: 10px 0; background:#C0DEED url(//si0.twimg.com/sticky/error_pages/bg-clouds.png) repeat-x; color:#333; font: 12px Lucida Grande, Arial, sans-serif; text-align:center }
      #container { width: 755px; margin: 0 auto; padding: 0px 0; text-align: left; position: relative; }
      #content { width: 100%; margin-top: 8px; float: left; padding-bottom: 15px; background: transparent url(//si0.twimg.com/sticky/error_pages/arr2.gif) no-repeat scroll 25px 0px;}
      .subpage #content .wrapper { background-color: #fff;  -moz-border-radius: 5px; -webkit-border-radius: 5px; padding: 10px 0;}
      .subpage #content h2 { margin: 5px 20px; font: bold 26px Helvetica Neue, Helvetica, Arial, sans-serif; }
      .subpage #content p { margin: 0 20px 10px 20px; color: #666; font-size: 13px;}
      .subpage #content ul { padding-left: 30px; }
      .subpage #content ol, #side ol { padding-left: 30px; }
      a{text-decoration:none;color: #2277BB;}
      a:hover { text-decoration: underline;}
      #content div.desc { margin: 11px 0px 10px 0px; }
      a img{border:0;}
      ul{list-style:square;padding-left:20px;}
      div.error { width: 100%; text-align: right; margin: 10px 0;}

      /* Navigation
      ----------------------------------------------- */
      #navigation { background-color: #fff; position: absolute; top: 8px; right: 0; padding: 6px 6px; font-size: 13px; text-align: center; }
      #navigation ul { margin: 0; padding: 0px; width: auto; height: 100%; _width: 60px; }
      #navigation li { display:inline; padding: 0 5px; }
      #navigation li:before { content: ' '; padding-right: 0; }
      #navigation li.first:before { content: ''; padding-right: 0; }
      #navigation, #footer { -moz-border-radius: 5px;-webkit-border-radius: 5px;}

      /* Footer
      ----------------------------------------------- */
      #footer { clear: left; width: 555px; text-align: left; padding: 0px 0; font-size: 11px; color: #778899;}
      #footer ul { clear: both; display: block;}
      #footer li { display: block; float: left; margin: 0 16px 0 0;}
      #footer li.first:before { content: ''; padding-right: 0; }
      #languages li { margin-bottom: 25px; font-size: 12px; width: 14%; text-align: center; }

    </style>
  </head>
  <body>
    <div id="container" class="subpage">
      <div id="navigation">
        <ul>
          <li class="first"><a href="//twitter.com">Home &#8250;</a></li>
        </ul>
      </div>
      <h1 id="header"><a href="//twitter.com"><img src="//si0.twimg.com/sticky/error_pages/twitter_logo_header.png" width="155" height="36" alt="Twitter.com" /></a></h1>
      <div id="content">
        <div class="desc"></div>
        <div class="wrapper">
          <h2>Something is technically wrong.</h2>
          <p>Thanks for noticing—we're going to fix it up and have things back to normal soon.</p>
        </div>
      </div>
      <div id="footer" style="width:100%">
        <ul id="languages">
          <li class="first"><a onclick="displayLanguage('en');return false;" href="#">English</a></li>
          <li><a onclick="displayLanguage('de');return false;" href="#">Deutsch</a></li>
          <li><a onclick="displayLanguage('es');return false;" href="#">Español</a></li>
          <li><a onclick="displayLanguage('fr');return false;" href="#">Français</a></li>
          <li><a onclick="displayLanguage('it');return false;" href="#">Italiano</a></li>
          <li><a onclick="displayLanguage('ja');return false;" href="#">日本語</a></li>
          <li><a onclick="displayLanguage('ko');return false;" href="#">한국어</a></li>
          <li><a onclick="displayLanguage('pt');return false;" href="#">Português</a></li>
        </ul>

        <ul>
          <li class="first">&copy; 2011 Twitter</li>
          <li><a href="/about">About Us</a></li>
          <li><a href="/about/contact">Contact</a></li>
          <li><a href="http://blog.twitter.com/">Blog</a></li>
          <li><a href="http://status.twitter.com/">Status</a></li>
          <li><a href="http://dev.twitter.com/">API</a></li>
          <li><a href="/help">Help</a></li>
          <li><a href="/jobs">Jobs</a></li>
          <li><a href="/tos">TOS</a></li>
          <li><a href="/privacy">Privacy</a></li>
        </ul>
      </div>
      <div class="error"><img src="//si0.twimg.com/sticky/error_pages/please_fix.png" width="311" height="212" alt=""/></div>
    </div>
    <!-- BEGIN google analytics -->
    <script type="text/javascript">
      var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
      document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
    </script>
    <script type="text/javascript">
      var pageTracker = _gat._getTracker("UA-30775-6");
      pageTracker._setDomainName("twitter.com");
      pageTracker._trackPageview('500 Error');
    </script>
    <!-- END google analytics -->
    <script type="text/javascript">
    //<![CDATA[
    var twttr = {};

    twttr.translations = {
      en: {
        home: 'Home &#8250;',
        title: 'Something is technically wrong.',
        description: 'Thanks for noticing—we\'re going to fix it up and have things back to normal soon.'
      },
      de: {
        home: 'Startseite &#8250;',
        title: 'Es ist ein technischer Fehler aufgetreten.',
        description: 'Vielen Dank für deine Aufmerksamkeit - wir lösen das Problem und alles wird bald wieder seine Richtigkeit haben.'
      },
      es: {
        home: 'Página de Inicio &#8250;',
        title: 'Algo salió mal, técnicamente.',
        description: 'Gracias por darte cuenta - vamos a solucionarlo y todo volverá a la normalidad pronto.'
      },
      fr: {
        home: 'Accueil &#8250;',
        title: 'Un problème technique est survenu.',
        description: 'Merci d\'avoir remarqué—nous allons réparer tout ça et remettre les choses en ordre sous peu.'
      },
      it: {
        home: 'Pagina Iniziale &#8250;',
        title: 'Tecnicamente qualcosa è andato storto.',
        description: 'Grazie per averlo notato: stiamo lavorando per aggiustare e rimettere presto tutto a posto.'
      },
      ja: {
        home: 'ホーム &#8250;',
        title: '技術的な不具合が発生しています。',
        description: 'ご迷惑をおかけして申し訳ありません。早急に問題を解決し、復旧いたします。'
      },
      ko: {
        home: '홈 &#8250;',
        title: '현재 트위터에 문제가 있습니다',
        description: '이용에 불편을 드려 죄송합니다. 가능한 빨리 복원하도록 하겠습니다.'
      },
      pt: {
        home: 'Página Inicial &#8250;',
        title: 'Algo está tecnicamente errado.',
        description: 'Obrigado por reparar—iremos corrigir este problema e ter as coisas de volta ao normal em breve.'
      }
    };

    function displayLanguage(lang) {
      if (lang && twttr.translations[lang]) {
        document.getElementsByTagName('h2')[0].innerHTML = twttr.translations[lang].title;
        document.getElementsByTagName('p')[0].innerHTML = twttr.translations[lang].description;
        document.getElementById('navigation').getElementsByTagName('a')[0].innerHTML = twttr.translations[lang].home;
      }
    }

    var lang = window.navigator.language ? window.navigator.language.replace(/^(..).*$/, '$1') : undefined;
    displayLanguage(lang);
    //]]>
    </script>
  </body>
</html>
'
/opt/local/lib/ruby1.9/1.9.1/json/common.rb:148:in `parse'
/opt/local/lib/ruby1.9/1.9.1/json/common.rb:148:in `parse'
/opt/local/lib/ruby1.9/gems/1.9.1/gems/twitter_oauth-0.4.3/lib/twitter_oauth/client.rb:80:in `post'
/opt/local/lib/ruby1.9/gems/1.9.1/gems/twitter_oauth-0.4.3/lib/twitter_oauth/status.rb:11:in `update'
/Users/seppo/Projects/free-software/earthquake/lib/earthquake/commands.rb:89:in `block (3 levels) in <top (required)>'
/Users/seppo/Projects/free-software/earthquake/lib/earthquake/input.rb:99:in `call'
/Users/seppo/Projects/free-software/earthquake/lib/earthquake/input.rb:99:in `handle_api_error'
/Users/seppo/Projects/free-software/earthquake/lib/earthquake/input.rb:95:in `block in async_e'
/Users/seppo/Projects/free-software/earthquake/lib/earthquake/core.rb:212:in `call'
/Users/seppo/Projects/free-software/earthquake/lib/earthquake/core.rb:212:in `block in async'

Support for lists

It would be great if :recent supported lists, or if there was a :list command.

uninitialized constant Syck::Syck

Hi,
I tried to install earthquake by following the slides, but it doesn't worked for me, so I tried with compiling the latest version of ruby, and I still get the same error message when I use gem install earthquake, here's the full error message => http://pastebin.com/yyLyLJ3e

Feature Request: Flag user as spam

Not sure if the Twitter API provides a way to do this, but I'm pretty sure it does.

Example theoretical usage:

:spam [user or $tweetID]

suppress $id expansion

How can I tweet $id, instead of for instance 187363363188248580?

 :update $id
update '187363363188248580' [Yn] n
 :update \$id
update '\187363363188248580' [Yn] n

I investigated it and got the idea to suppress this.
Currently, below sequence is resulted to "Command not found".

 : :update $id
Command not found

The patch below makes ⚡ : (start with colon + space) as a signal not to expand the typable id.

 : :update $id
update '$id' [Yn] n

However, with this patch, we cannot use :reply, (quoted) :retweet, and more perhaps.
Those require the $id to determine the target tweet. One more thing, some commands
are using input() internally, then the input_filter will be applied twice.
Any idea?

Also available: https://gist.github.com/2237938

diff --git a/lib/earthquake/input.rb b/lib/earthquake/input.rb
index 870cefc..9469c25 100644
--- a/lib/earthquake/input.rb
+++ b/lib/earthquake/input.rb
@@ -141,6 +141,7 @@ module Earthquake
     end

     input_filter do |text|
+      next text if text.sub!(/\A: /, "")
       if text =~ %r|^(:\w+)|
         if target = command_aliases[$1]
           text = text.sub(%r|^:\w+|, target)

I don't want to introduce any escape sequences, though ;-).

Config is reloaded after each command

After every command the config is reloaded. If a command changes a configuration that's also set by the default config, the changes by the command are lost.

Add ability to join images

User could choose yfrog, plixi, etc... And there should be a simple way to provide new services.

Then it could be tricked by implicit or explicit ways:

  • if status contains /path/to/image (detected with extension, or directly check file path and check its real type) it could be automatically sent to user's favorite service and status would be updated accordingly.
  • a dedicated command ":image /path/to/image [service]" that would print the final URL.

The favorite service should be configured by user. Maybe ":enable image_service yfrog" could do the trick.

Installation Issue?: Invalid gemspec in [..earthquake-0.8.3.gemspec]: Illformed requirement

I'm probably doing something wrong but when I install I get an error running earthquake:

$earthquake
Invalid gemspec in [/usr/lib/ruby/gems/1.9.1/specifications/earthquake-0.8.3.gemspec]: Illformed requirement ["#Syck::DefaultKey:0x00000001933928 0.4.3"]

$cat earthquake-0.8.3.gemspec | grep -i syck
s.add_runtime_dependency(%q<twitter_oauth>, ["#Syck::DefaultKey:0x00000001933928 0.4.3"])
s.add_dependency(%q<twitter_oauth>, ["#Syck::DefaultKey:0x00000001933928 0.4.3"])
s.add_dependency(%q<twitter_oauth>, ["#Syck::DefaultKey:0x00000001933928 0.4.3"])

$gem uninstall earthquake -i /usr/lib/ruby/gems/1.9.1
Invalid gemspec in [/usr/lib/ruby/gems/1.9.1/specifications/earthquake-0.8.3.gemspec]: Illformed requirement ["#Syck::DefaultKey:0x00000001933928 0.4.3"]
Invalid gemspec in [/usr/lib/ruby/gems/1.9.1/specifications/earthquake-0.8.3.gemspec]: Illformed requirement ["#Syck::DefaultKey:0x00000001933928 0.4.3"]
INFO: gem "earthquake" is not installed

Token Request 401 Unauthorized

First launch I get this:

/usr/local/rvm/gems/ruby-1.9.2-p290/gems/oauth-0.4.5/lib/oauth/consumer.rb:219:in `token_request': 401 Unauthorized (OAuth::Unauthorized)
from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/oauth-0.4.5/lib/oauth/consumer.rb:139:in `get_request_token'
from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/earthquake-0.8.3/lib/earthquake/get_access_token.rb:10:in `get_access_token'
from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/earthquake-0.8.3/lib/earthquake/core.rb:75:in `load_config'
from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/earthquake-0.8.3/lib/earthquake/core.rb:35:in `_init'
from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/earthquake-0.8.3/lib/earthquake/core.rb:90:in `__init'
from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/earthquake-0.8.3/lib/earthquake/core.rb:100:in `start'
from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/earthquake-0.8.3/bin/earthquake:48:in `<top (required)>'
from /usr/local/rvm/gems/ruby-1.9.2-p290/bin/earthquake:19:in `load'
from /usr/local/rvm/gems/ruby-1.9.2-p290/bin/earthquake:19:in `<main>'

Any idea what's up with it?

Configure default confirm action

It would be nice to be able to setup the default action for confirmation messages. At the moment most (or all?) of the confirms default to "yes" and it's impossible to change without modifying the source code.

installing on mac os x error

after $ gem install earthquake

ERROR: While executing gem ... (NoMethodError)
undefined method `call' for nil:NilClass

Exception backtracing thread to protected tweet

When calling :thread on a tweet that leads to a protected tweet an exception is raised and no tweet is displayed.

Ex.: user A has protected tweets and the current user is not authorized to view his tweets.

[$aa] B: @A yeah, me too (reply to $ab) ...
⚡ :thread $aa
.
⚡ 

I was able to see the exception showing an invalid json with some html page in the growl notification, but not enough to get something useful.

Allow :user $id

Or more generically, every command that expects a user as a parameter should be able to receive an identifier of a tweet and use that tweets user.

E.g.:

[$aa] seppo0010: earthquake rules
⚡ :user $aa
{
                   "id" => 8117182,
          "screen_name" => "seppo0010",
                 "name" => "seppo0010",
    "profile_image_url" => "http://a1.twimg.com/profile_images/1487896175/11_-_1_normal.jpg",
          "description" => "Programmer. Studying to be an Actuary. Linux fan.",
                  "url" => "http://catdevmind.blogspot.com/",
             "location" => "",
            "time_zone" => "Buenos Aires",
                 "lang" => "en",
            "protected" => false
}

Crashes on launch on Mac OS X 10.6

Whenever I launch earthquake I get the following error, followed by a crash:

                 _   _                       _
  ___  __ _ _ __| |_| |__   __ _ _   _  __ _| | _____
 / _ \/ _` | '__| __| '_ \ / _` | | | |/ _` | |/ / _ \
|  __/ (_| | |  | |_| | | | (_| | |_| | (_| |   <  __/
 \___|\__,_|_|   \__|_| |_|\__, |\__,_|\__,_|_|\_\___|
                              |_|               v0.8.3

/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/eventmachine-0.12.10/lib/rubyeventmachine.bundle: [BUG] Segmentation fault
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin10.8.0]

-- control frame ----------
c:0039 p:-540475476 s:0151 b:0151 l:000150 d:000150 TOP   
c:0038 p:---- s:0149 b:0149 l:000148 d:000148 CFUNC  :require
c:0037 p:0174 s:0145 b:0145 l:000144 d:000144 METHOD /Users/mark/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55
c:0036 p:0012 s:0138 b:0138 l:000122 d:000137 BLOCK  /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240
c:0035 p:0005 s:0136 b:0136 l:000127 d:000135 BLOCK  /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:223
c:0034 p:0045 s:0134 b:0134 l:000133 d:000133 METHOD /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:640
c:0033 p:0041 s:0128 b:0128 l:000127 d:000127 METHOD /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:223
c:0032 p:0019 s:0123 b:0123 l:000122 d:000122 METHOD /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240
c:0031 p:0150 s:0117 b:0117 l:000116 d:000116 TOP    /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/eventmachine-0.12.10/lib/eventmachine.rb:66
c:0030 p:---- s:0115 b:0115 l:000114 d:000114 FINISH
c:0029 p:---- s:0113 b:0113 l:000112 d:000112 CFUNC  :require
c:0028 p:0174 s:0109 b:0109 l:000108 d:000108 METHOD /Users/mark/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55
c:0027 p:0012 s:0102 b:0102 l:000086 d:000101 BLOCK  /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240
c:0026 p:0005 s:0100 b:0100 l:000091 d:000099 BLOCK  /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:223
c:0025 p:0045 s:0098 b:0098 l:000097 d:000097 METHOD /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:640
c:0024 p:0041 s:0092 b:0092 l:000091 d:000091 METHOD /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:223
c:0023 p:0019 s:0087 b:0087 l:000086 d:000086 METHOD /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240
c:0022 p:0011 s:0081 b:0081 l:000080 d:000080 TOP    /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/twitter-stream-0.1.14/lib/twitter/json_stream.rb:1
c:0021 p:---- s:0079 b:0079 l:000078 d:000078 FINISH
c:0020 p:---- s:0077 b:0077 l:000076 d:000076 CFUNC  :require
c:0019 p:0174 s:0073 b:0073 l:000072 d:000072 METHOD /Users/mark/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55
c:0018 p:0012 s:0066 b:0066 l:000050 d:000065 BLOCK  /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240
c:0017 p:0005 s:0064 b:0064 l:000055 d:000063 BLOCK  /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:223
c:0016 p:0045 s:0062 b:0062 l:000061 d:000061 METHOD /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:640
c:0015 p:0041 s:0056 b:0056 l:000055 d:000055 METHOD /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:223
c:0014 p:0019 s:0051 b:0051 l:000050 d:000050 METHOD /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240
c:0013 p:0012 s:0045 b:0045 l:000036 d:000044 BLOCK  /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/earthquake-0.8.3/lib/earthquake.rb:14
c:0012 p:---- s:0042 b:0042 l:000041 d:000041 FINISH
c:0011 p:---- s:0040 b:0040 l:000039 d:000039 CFUNC  :each
c:0010 p:0034 s:0037 b:0037 l:000036 d:000036 TOP    /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/earthquake-0.8.3/lib/earthquake.rb:3
c:0009 p:---- s:0035 b:0035 l:000034 d:000034 FINISH
c:0008 p:---- s:0033 b:0033 l:000032 d:000032 CFUNC  :require
c:0007 p:0174 s:0029 b:0029 l:000028 d:000028 METHOD /Users/mark/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55
c:0006 p:0445 s:0022 b:0022 l:000021 d:000021 TOP    /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/earthquake-0.8.3/bin/earthquake:44
c:0005 p:---- s:0013 b:0013 l:000012 d:000012 FINISH
c:0004 p:---- s:0011 b:0011 l:000010 d:000010 CFUNC  :load
c:0003 p:0127 s:0007 b:0007 l:0014e8 d:0009d0 EVAL   /Users/mark/.rvm/gems/ruby-1.9.2-p290/bin/earthquake:19
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:0014e8 d:0014e8 TOP   
---------------------------
-- Ruby level backtrace information ----------------------------------------
/Users/mark/.rvm/gems/ruby-1.9.2-p290/bin/earthquake:19:in `<main>'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/bin/earthquake:19:in `load'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/earthquake-0.8.3/bin/earthquake:44:in `<top (required)>'
/Users/mark/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
/Users/mark/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/earthquake-0.8.3/lib/earthquake.rb:3:in `<top (required)>'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/earthquake-0.8.3/lib/earthquake.rb:3:in `each'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/earthquake-0.8.3/lib/earthquake.rb:14:in `block in <top (required)>'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240:in `require'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:223:in `load_dependency'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:640:in `new_constants_in'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:223:in `block in load_dependency'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240:in `block in require'
/Users/mark/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
/Users/mark/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/twitter-stream-0.1.14/lib/twitter/json_stream.rb:1:in `<top (required)>'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240:in `require'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:223:in `load_dependency'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:640:in `new_constants_in'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:223:in `block in load_dependency'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240:in `block in require'
/Users/mark/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
/Users/mark/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/eventmachine-0.12.10/lib/eventmachine.rb:66:in `<top (required)>'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240:in `require'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:223:in `load_dependency'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:640:in `new_constants_in'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:223:in `block in load_dependency'
/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240:in `block in require'
/Users/mark/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
/Users/mark/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'

-- C level backtrace information -------------------------------------------

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

[1]    9438 abort      earthquake

syck.rb initialize error

                         _   _                       _
      ___  __ _ _ __| |_| |__   __ _ _   _  __ _| | _____
     / _ \/ _` | '__| __| '_ \ / _` | | | |/ _` | |/ / _ \
    |  __/ (_| | |  | |_| | | | (_| | |_| | (_| |   <  __/
     \___|\__,_|_|   \__|_| |_|\__, |\__,_|\__,_|_|\_\___|
                              |_|               v0.9.0

    /usr/lib/ruby/1.9.1/syck.rb:145:in `initialize': No such file or directory -       /home/******/work/earthquake/consumer.yml (Errno::ENOENT)
    from /usr/lib/ruby/1.9.1/syck.rb:145:in `open'
    from /usr/lib/ruby/1.9.1/syck.rb:145:in `load_file'
    from /home/*******/work/earthquake/lib/earthquake/core.rb:53:in `load_config'
    from /home/*******/work/earthquake/lib/earthquake/core.rb:35:in `_init'
    from /home/*******/work/earthquake/lib/earthquake/core.rb:96:in `__init'
    from /home/*******/work/earthquake/lib/earthquake/core.rb:106:in `start'
    from /home/*******/bin/earthquake:44:in `&lt;main&gt;'
    [1]    3284 exit 1     earthquake

I updated earthquake.gem today. But the error is appeared.
What's this problem?(I'm not rubyist...)

Resume interrupted stream

When my Mac goes to sleep, internet is put off. After awaking it, I no longer receive new tweets. :recent still works and restarting earthquake also makes them work again.

private method `require' called for Bundler:Module

$ earthquake
/home/logankoester/.rvm/gems/ruby-1.9.2-p136/gems/earthquake-0.1.1/lib/earthquake.rb:5:in <top (required)>': private methodrequire' called for Bundler:Module (NoMethodError)
from internal:lib/rubygems/custom_require:29:in require' from <internal:lib/rubygems/custom_require>:29:inrequire'
from /home/logankoester/.rvm/gems/ruby-1.9.2-p136/gems/earthquake-0.1.1/bin/earthquake:3:in <top (required)>' from /home/logankoester/.rvm/gems/ruby-1.9.2-p136/bin/earthquake:19:inload'
from /home/logankoester/.rvm/gems/ruby-1.9.2-p136/bin/earthquake:19:in `

'

Retweeting complex tweets causes improper display output

Example: [

[$ef] nicksergeant: RT @AisleOne: Holy mother! The 1976 NASA Graphic Standards Manual. http://j.mp/ntaI6W (retweet of $ee) - 19 Jul 15:39 - Twitter for iPhone
⚡ :retweet $ef /cc @SomaFMRusty
' [Yn] 976 NASA Graphic Standards Manual. http://j.mp/ntaI6W (93404564644040706)'
[$eg] ip2k: /cc @SomaFMRusty RT @nicksergeant: RT @AisleOne: Holy mother! The 1976 NASA Graphic Standards Manual. http://j.mp/ntaI6W (93404564644040706) 19 Jul 15:42 - earthquake.gem

The part I'd like to draw attention here is the stuff in parenthesis. I do not understand where these random numbers ( '(93404564644040706)' )came from, but my guess is that it's a bug.

Optional: Detect shortened URLs and replace with longer

Should be optional, and may be enabled with a command such like ":enable auto_expand_urls".
Then messages will appear with shortened URLs replaced with the full ones.

Could be called manually with a command like ":expand_urls " (prints the message with full URLs) and/or ":expand_url " (prints full url).

multibyte update displayed broken

earthquake.gem で、マルチバイトの長い文字列を投稿しようとすると、
下のように表示がおかしくなります。
vimshellのバグかと思いましたが、GNOME Terminalでも再現したため、earthquake.gemのバグと結論付けました。

⚡ ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
��ああああああああああああああ' [Yn] n

vimshellで、どのようなエスケープシーケンスが出ているのか調べてみると、

ああああああああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああ ^Mあああああああああああああああ^M
update 'あああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ^M<82>ああああああああああああああああああ' [Yn]

となっており、

  1. ^Mがここにでるのはおかしい。^M^@ではないか?
  2. マルチバイトが途中で切れている。

という問題が発生していることが分かります。

Invalid gemspec

Love, love, love earthquake. But can't run it anymore, because I get:

Invalid gemspec in [/usr/lib64/ruby/gems/1.9.1/specifications/earthquake-0.8.1.gemspec]: Illformed requirement ["#Syck::DefaultKey:0x0000000251a278 0.4.3"]

when I try to install it.

In fact, that error appears even when earthquake is not actually installed (when running anything having to do with gems, irb etc.)

Any thoughts on what might be causing this? Is there a way to clear out the gemspec and start over?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.