elasticshell 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +5 -5
 - data/VERSION +1 -1
 - data/lib/elasticshell/client.rb +32 -20
 - data/lib/elasticshell/commands/connect.rb +2 -2
 - data/lib/elasticshell/commands/request.rb +1 -1
 - data/lib/elasticshell/shell.rb +1 -5
 - data/lib/elasticshell/utils/log.rb +1 -1
 - data/spec/elasticshell/client_spec.rb +1 -1
 - data/spec/elasticshell/commands/connect_spec.rb +2 -2
 - data/spec/elasticshell/commands/request_spec.rb +9 -9
 - metadata +3 -3
 
    
        data/README.rdoc
    CHANGED
    
    | 
         @@ -74,7 +74,7 @@ you can connect to servers by issuing the +connect+ command: 
     | 
|
| 
       74 
74 
     | 
    
         
             
            === Understanding Scope
         
     | 
| 
       75 
75 
     | 
    
         | 
| 
       76 
76 
     | 
    
         
             
            Scopes are defined by the Elasticsearch REST API.  Some scopes like
         
     | 
| 
       77 
     | 
    
         
            -
            <tt>/_cluster</tt> or <tt>/ 
     | 
| 
      
 77 
     | 
    
         
            +
            <tt>/_cluster</tt> or <tt>/_nodes</tt> are static and present for all
         
     | 
| 
       78 
78 
     | 
    
         
             
            Elasticsearch clusters.  Other scopes like <tt>/my_index/my_type</tt>
         
     | 
| 
       79 
79 
     | 
    
         
             
            depend upon the particular cluster.
         
     | 
| 
       80 
80 
     | 
    
         | 
| 
         @@ -239,10 +239,10 @@ Or you can try sending it to Ruby itself: 
     | 
|
| 
       239 
239 
     | 
    
         | 
| 
       240 
240 
     | 
    
         
             
              GET /my_index$ _search /tmp/query_that_needs_filtering.json | puts response["hits"]["hits"].first["body"]
         
     | 
| 
       241 
241 
     | 
    
         | 
| 
       242 
     | 
    
         
            -
            Everything to the right of the  
     | 
| 
       243 
     | 
    
         
            -
            that has the +response+ and +request+ variables in scope.  You 
     | 
| 
       244 
     | 
    
         
            -
            even more free by just piping without any Ruby code, which will 
     | 
| 
       245 
     | 
    
         
            -
            you in a Ruby (Pry) shell with the same binding.
         
     | 
| 
      
 242 
     | 
    
         
            +
            Everything to the right of the <tt>|</tt> is executing within a Ruby
         
     | 
| 
      
 243 
     | 
    
         
            +
            process that has the +response+ and +request+ variables in scope.  You
         
     | 
| 
      
 244 
     | 
    
         
            +
            can be even more free by just piping without any Ruby code, which will
         
     | 
| 
      
 245 
     | 
    
         
            +
            leave you in a Ruby (Pry) shell with the same binding.
         
     | 
| 
       246 
246 
     | 
    
         | 
| 
       247 
247 
     | 
    
         
             
              GET /my_index$ _search /tmp/query_that_needs_interaction.json | 
         
     | 
| 
       248 
248 
     | 
    
         
             
              >> response
         
     | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0.0. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.0.6
         
     | 
    
        data/lib/elasticshell/client.rb
    CHANGED
    
    | 
         @@ -9,29 +9,20 @@ module Elasticshell 
     | 
|
| 
       9 
9 
     | 
    
         
             
                  @options = options
         
     | 
| 
       10 
10 
     | 
    
         
             
                end
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                def  
     | 
| 
       13 
     | 
    
         
            -
                  servers =  
     | 
| 
      
 12 
     | 
    
         
            +
                def safely_connect options={}
         
     | 
| 
      
 13 
     | 
    
         
            +
                  servers = @options.merge(options)[:servers]
         
     | 
| 
       14 
14 
     | 
    
         
             
                  raise ClientError.new("Must provide at least one server to connect to.") if servers.empty?
         
     | 
| 
       15 
     | 
    
         
            -
                   
     | 
| 
       16 
     | 
    
         
            -
                    Elasticshell.debug("Connecting to Elasticsearch servers: #{servers.join(', ')}")
         
     | 
| 
       17 
     | 
    
         
            -
                    begin
         
     | 
| 
       18 
     | 
    
         
            -
                      timeout(5) do
         
     | 
| 
       19 
     | 
    
         
            -
                        @client = ElasticSearch::Client.new(servers)
         
     | 
| 
       20 
     | 
    
         
            -
                      end
         
     | 
| 
       21 
     | 
    
         
            -
                    rescue Timeout::Error => e
         
     | 
| 
       22 
     | 
    
         
            -
                      Elasticshell.error("Could not connect to Elasticsearch servers: #{servers.join(', ')}")
         
     | 
| 
       23 
     | 
    
         
            -
                      return
         
     | 
| 
       24 
     | 
    
         
            -
                    end
         
     | 
| 
       25 
     | 
    
         
            -
                    Elasticshell.info("Connected to Elasticsearch servers: #{servers.join(', ')}")
         
     | 
| 
       26 
     | 
    
         
            -
                  rescue ElasticSearch::ConnectionFailed => e
         
     | 
| 
       27 
     | 
    
         
            -
                    raise ClientError.new("Could not connect to Elasticsearch server: #{servers.join(', ')}")
         
     | 
| 
       28 
     | 
    
         
            -
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
                  connect(servers.dup, first_attempt=true)
         
     | 
| 
       29 
16 
     | 
    
         
             
                end
         
     | 
| 
       30 
17 
     | 
    
         | 
| 
       31 
18 
     | 
    
         
             
                def connected?
         
     | 
| 
       32 
19 
     | 
    
         
             
                  @client
         
     | 
| 
       33 
20 
     | 
    
         
             
                end
         
     | 
| 
       34 
21 
     | 
    
         | 
| 
      
 22 
     | 
    
         
            +
                def safely verb, params={}, options={}, body=''
         
     | 
| 
      
 23 
     | 
    
         
            +
                  request(verb, params, options.merge(:safely => true))
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
       35 
26 
     | 
    
         
             
                def request verb, params={}, options={}, body=''
         
     | 
| 
       36 
27 
     | 
    
         
             
                  raise ClientError.new("Not connected to any Elasticsearch servers.") unless connected?
         
     | 
| 
       37 
28 
     | 
    
         
             
                  safe        = options.delete(:safely)
         
     | 
| 
         @@ -50,8 +41,33 @@ module Elasticshell 
     | 
|
| 
       50 
41 
     | 
    
         
             
                    end
         
     | 
| 
       51 
42 
     | 
    
         
             
                  end
         
     | 
| 
       52 
43 
     | 
    
         
             
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
                
         
     | 
| 
      
 45 
     | 
    
         
            +
                private
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                def connect servers, first_attempt=false
         
     | 
| 
      
 48 
     | 
    
         
            +
                  string  = servers.join(' ')
         
     | 
| 
      
 49 
     | 
    
         
            +
                  Elasticshell.debug("Attempting to connect to #{string} ...")         if first_attempt
         
     | 
| 
      
 50 
     | 
    
         
            +
                  raise ClientError.new("Timed out or failed to connect to #{string}") if servers.empty?
         
     | 
| 
      
 51 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 52 
     | 
    
         
            +
                    server = servers.shift
         
     | 
| 
      
 53 
     | 
    
         
            +
                    timeout(5) do
         
     | 
| 
      
 54 
     | 
    
         
            +
                      @client = ElasticSearch::Client.new(server)
         
     | 
| 
      
 55 
     | 
    
         
            +
                      Elasticshell.info("Connected to #{server}")
         
     | 
| 
      
 56 
     | 
    
         
            +
                    end
         
     | 
| 
      
 57 
     | 
    
         
            +
                  rescue Timeout::Error => e
         
     | 
| 
      
 58 
     | 
    
         
            +
                    Elasticshell.debug("Timed out connecting to #{server}")
         
     | 
| 
      
 59 
     | 
    
         
            +
                    connect(servers)
         
     | 
| 
      
 60 
     | 
    
         
            +
                  rescue ElasticSearch::ConnectionFailed => e
         
     | 
| 
      
 61 
     | 
    
         
            +
                    Elasticshell.debug("Failure connecting to #{server}")
         
     | 
| 
      
 62 
     | 
    
         
            +
                    connect(servers)
         
     | 
| 
      
 63 
     | 
    
         
            +
                  rescue => e
         
     | 
| 
      
 64 
     | 
    
         
            +
                    Elasticshell.error("#{e.class} -- #{e.message}")
         
     | 
| 
      
 65 
     | 
    
         
            +
                    connect(servers)
         
     | 
| 
      
 66 
     | 
    
         
            +
                  end
         
     | 
| 
      
 67 
     | 
    
         
            +
                end
         
     | 
| 
       53 
68 
     | 
    
         | 
| 
       54 
69 
     | 
    
         
             
                def perform_request verb, params, options, body
         
     | 
| 
      
 70 
     | 
    
         
            +
                  # p [verb, params, options, body]
         
     | 
| 
       55 
71 
     | 
    
         
             
                  @client.execute(:standard_request, verb.downcase.to_sym, params, options, body)
         
     | 
| 
       56 
72 
     | 
    
         
             
                end
         
     | 
| 
       57 
73 
     | 
    
         | 
| 
         @@ -68,10 +84,6 @@ module Elasticshell 
     | 
|
| 
       68 
84 
     | 
    
         
             
                  # end
         
     | 
| 
       69 
85 
     | 
    
         
             
                end
         
     | 
| 
       70 
86 
     | 
    
         | 
| 
       71 
     | 
    
         
            -
                def safely verb, params={}, options={}, body=''
         
     | 
| 
       72 
     | 
    
         
            -
                  request(verb, params, options.merge(:safely => true))
         
     | 
| 
       73 
     | 
    
         
            -
                end
         
     | 
| 
       74 
     | 
    
         
            -
              
         
     | 
| 
       75 
87 
     | 
    
         
             
              end
         
     | 
| 
       76 
88 
     | 
    
         | 
| 
       77 
89 
     | 
    
         
             
            end
         
     | 
| 
         @@ -11,7 +11,7 @@ module Elasticshell 
     | 
|
| 
       11 
11 
     | 
    
         
             
                  def evaluate!
         
     | 
| 
       12 
12 
     | 
    
         
             
                    servers = (input.split(/\s+/, 2)[1] || '').split(/\s+/)
         
     | 
| 
       13 
13 
     | 
    
         
             
                    if servers.empty?
         
     | 
| 
       14 
     | 
    
         
            -
                      shell.client. 
     | 
| 
      
 14 
     | 
    
         
            +
                      shell.client.safely_connect()
         
     | 
| 
       15 
15 
     | 
    
         
             
                    else
         
     | 
| 
       16 
16 
     | 
    
         
             
                      uris = servers.map do |raw|
         
     | 
| 
       17 
17 
     | 
    
         
             
                        has_port = raw =~ /:\d+/
         
     | 
| 
         @@ -31,7 +31,7 @@ module Elasticshell 
     | 
|
| 
       31 
31 
     | 
    
         
             
                          nil
         
     | 
| 
       32 
32 
     | 
    
         
             
                        end
         
     | 
| 
       33 
33 
     | 
    
         
             
                      end.compact
         
     | 
| 
       34 
     | 
    
         
            -
                      shell.client. 
     | 
| 
      
 34 
     | 
    
         
            +
                      shell.client.safely_connect(:servers => uris)
         
     | 
| 
       35 
35 
     | 
    
         
             
                    end
         
     | 
| 
       36 
36 
     | 
    
         
             
                  end
         
     | 
| 
       37 
37 
     | 
    
         | 
| 
         @@ -15,7 +15,7 @@ module Elasticshell 
     | 
|
| 
       15 
15 
     | 
    
         
             
                  end
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
                  def perform_request!
         
     | 
| 
       18 
     | 
    
         
            -
                    self.response = shell.client. 
     | 
| 
      
 18 
     | 
    
         
            +
                    self.response = shell.client.safely(request[:verb], {:op => request[:path].gsub(/^\//,'') }, request[:query_options].merge(:log => shell.log_requests?), request[:body])
         
     | 
| 
       19 
19 
     | 
    
         
             
                  end
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
                  def pipe?
         
     | 
    
        data/lib/elasticshell/shell.rb
    CHANGED
    
    | 
         @@ -108,15 +108,11 @@ module Elasticshell 
     | 
|
| 
       108 
108 
     | 
    
         
             
                end
         
     | 
| 
       109 
109 
     | 
    
         | 
| 
       110 
110 
     | 
    
         
             
                def prompt
         
     | 
| 
       111 
     | 
    
         
            -
                  verb_string  =  
     | 
| 
      
 111 
     | 
    
         
            +
                  verb_string  = Elasticshell.format((verb.to_s =~ /^(?:G|H)/i ? :passive_http_verb_format : :active_http_verb_format), "%v", verb.to_s.upcase)
         
     | 
| 
       112 
112 
     | 
    
         
             
                  scope_string = Elasticshell.format((scope.exists? ? :existing_scope_format : :missing_scope_format), "%s", scope.path)
         
     | 
| 
       113 
113 
     | 
    
         
             
                  Elasticshell.format((pretty? ? :pretty_prompt_format : :prompt_format), ["%s", "%v"], [scope_string, verb_string])
         
     | 
| 
       114 
114 
     | 
    
         
             
                end
         
     | 
| 
       115 
115 
     | 
    
         | 
| 
       116 
     | 
    
         
            -
                def self.formatted_verb verb
         
     | 
| 
       117 
     | 
    
         
            -
                  Elasticshell.format((verb.to_s =~ /^(?:G|H)/i ? :passive_http_verb_format : :active_http_verb_format), "%v", verb.to_s.upcase)
         
     | 
| 
       118 
     | 
    
         
            -
                end
         
     | 
| 
       119 
     | 
    
         
            -
                
         
     | 
| 
       120 
116 
     | 
    
         
             
                def pretty?
         
     | 
| 
       121 
117 
     | 
    
         
             
                  @pretty
         
     | 
| 
       122 
118 
     | 
    
         
             
                end
         
     | 
| 
         @@ -61,7 +61,7 @@ module Elasticshell 
     | 
|
| 
       61 
61 
     | 
    
         
             
              end
         
     | 
| 
       62 
62 
     | 
    
         | 
| 
       63 
63 
     | 
    
         
             
              def self.request verb, host, path
         
     | 
| 
       64 
     | 
    
         
            -
                log.info(format(:http_request_format, ["%v", "%h", "%p"], [ 
     | 
| 
      
 64 
     | 
    
         
            +
                log.info(format(:http_request_format, ["%v", "%h", "%p"], [verb.to_s.upcase, host, path]))
         
     | 
| 
       65 
65 
     | 
    
         
             
              end
         
     | 
| 
       66 
66 
     | 
    
         | 
| 
       67 
67 
     | 
    
         
             
              def self.debug msg
         
     | 
| 
         @@ -8,12 +8,12 @@ describe Commands::Connect do 
     | 
|
| 
       8 
8 
     | 
    
         
             
              end
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              it "should start a connection to the default servers" do
         
     | 
| 
       11 
     | 
    
         
            -
                @shell.client.should_receive(: 
     | 
| 
      
 11 
     | 
    
         
            +
                @shell.client.should_receive(:safely_connect).with()
         
     | 
| 
       12 
12 
     | 
    
         
             
                expect(@shell.eval_line("connect"))
         
     | 
| 
       13 
13 
     | 
    
         
             
              end
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
              it "should start a connection to the given comma-separated servers" do
         
     | 
| 
       16 
     | 
    
         
            -
                @shell.client.should_receive(: 
     | 
| 
      
 16 
     | 
    
         
            +
                @shell.client.should_receive(:safely_connect).with(:servers => %w[http://123.123.123.123:9200/ http://321.321.321.321:9200/])
         
     | 
| 
       17 
17 
     | 
    
         
             
                expect(@shell.eval_line("connect http://123.123.123.123:9200 http://321.321.321.321:9200"))
         
     | 
| 
       18 
18 
     | 
    
         
             
              end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
         @@ -8,50 +8,50 @@ describe Commands::Request do 
     | 
|
| 
       8 
8 
     | 
    
         
             
              end
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              it "should recognize a simple request" do
         
     | 
| 
       11 
     | 
    
         
            -
                @shell.client.should_receive(: 
     | 
| 
      
 11 
     | 
    
         
            +
                @shell.client.should_receive(:safely).with("GET", { :op => "_simple" }, kind_of(Hash), "").and_return('{}')
         
     | 
| 
       12 
12 
     | 
    
         
             
                @shell.eval_line("_simple")
         
     | 
| 
       13 
13 
     | 
    
         
             
              end
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
              it "should recognize a simple request with a different verb" do
         
     | 
| 
       16 
     | 
    
         
            -
                @shell.client.should_receive(: 
     | 
| 
      
 16 
     | 
    
         
            +
                @shell.client.should_receive(:safely).with("POST", { :op => "_simple" }, kind_of(Hash), "").and_return('{}')
         
     | 
| 
       17 
17 
     | 
    
         
             
                @shell.eval_line("POST _simple")
         
     | 
| 
       18 
18 
     | 
    
         
             
              end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
              it "should recognize a request with an absolute path" do
         
     | 
| 
       21 
     | 
    
         
            -
                @shell.client.should_receive(: 
     | 
| 
      
 21 
     | 
    
         
            +
                @shell.client.should_receive(:safely).with("GET", { :op => "some/thing" }, kind_of(Hash), "").and_return('{}')
         
     | 
| 
       22 
22 
     | 
    
         
             
                @shell.eval_line("/some/thing")
         
     | 
| 
       23 
23 
     | 
    
         
             
              end
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
25 
     | 
    
         
             
              it "should recognize a request with a query string" do
         
     | 
| 
       26 
     | 
    
         
            -
                @shell.client.should_receive(: 
     | 
| 
      
 26 
     | 
    
         
            +
                @shell.client.should_receive(:safely).with("GET", { :op => "_simple" }, {"foo" => "bar", "baz" => "booz what", :log => true}, "").and_return('{}')
         
     | 
| 
       27 
27 
     | 
    
         
             
                @shell.eval_line("_simple?foo=bar&baz=booz+what")
         
     | 
| 
       28 
28 
     | 
    
         
             
              end
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
              it "should recognize a request with an inline body" do
         
     | 
| 
       31 
     | 
    
         
            -
                @shell.client.should_receive(: 
     | 
| 
      
 31 
     | 
    
         
            +
                @shell.client.should_receive(:safely).with("POST", { :op => "_simple" }, kind_of(Hash), "{}").and_return('{}')
         
     | 
| 
       32 
32 
     | 
    
         
             
                @shell.eval_line("POST _simple {}")
         
     | 
| 
       33 
33 
     | 
    
         
             
              end
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
       35 
35 
     | 
    
         
             
              it "should recognize a request with a body read from a local file" do
         
     | 
| 
       36 
36 
     | 
    
         
             
                File.should_receive(:exist?).with("/some/file.json").and_return(true)
         
     | 
| 
       37 
37 
     | 
    
         
             
                File.should_receive(:read).with("/some/file.json").and_return("{}")
         
     | 
| 
       38 
     | 
    
         
            -
                @shell.client.should_receive(: 
     | 
| 
      
 38 
     | 
    
         
            +
                @shell.client.should_receive(:safely).with("GET", { :op => "_simple" }, kind_of(Hash), "{}").and_return('{}')
         
     | 
| 
       39 
39 
     | 
    
         
             
                @shell.eval_line("_simple /some/file.json")
         
     | 
| 
       40 
40 
     | 
    
         
             
              end
         
     | 
| 
       41 
41 
     | 
    
         | 
| 
       42 
42 
     | 
    
         
             
              it "should recognize a request with a body read from STDIN" do
         
     | 
| 
       43 
43 
     | 
    
         
             
                @shell.input_stream.stub!(:gets).and_return("{}")
         
     | 
| 
       44 
     | 
    
         
            -
                @shell.client.should_receive(: 
     | 
| 
      
 44 
     | 
    
         
            +
                @shell.client.should_receive(:safely).with("GET", { :op => "_simple" }, kind_of(Hash), "{}").and_return('{}')
         
     | 
| 
       45 
45 
     | 
    
         
             
                @shell.eval_line("_simple -")
         
     | 
| 
       46 
46 
     | 
    
         
             
              end
         
     | 
| 
       47 
47 
     | 
    
         | 
| 
       48 
48 
     | 
    
         
             
              it "should be able to pipe the output of a request to Ruby inline" do
         
     | 
| 
       49 
     | 
    
         
            -
                @shell.client.should_receive(: 
     | 
| 
      
 49 
     | 
    
         
            +
                @shell.client.should_receive(:safely).with("GET", { :op => "_simple" }, kind_of(Hash), "").and_return('{}')
         
     | 
| 
       50 
50 
     | 
    
         
             
                @shell.eval_line("_simple | response")
         
     | 
| 
       51 
51 
     | 
    
         
             
              end
         
     | 
| 
       52 
52 
     | 
    
         | 
| 
       53 
53 
     | 
    
         
             
              it "should be able to pipe the output of a request to a RIPL session" do
         
     | 
| 
       54 
     | 
    
         
            -
                @shell.client.should_receive(: 
     | 
| 
      
 54 
     | 
    
         
            +
                @shell.client.should_receive(:safely).with("GET", { :op => "_simple" }, kind_of(Hash), "").and_return('{}')
         
     | 
| 
       55 
55 
     | 
    
         
             
                require 'ripl'
         
     | 
| 
       56 
56 
     | 
    
         
             
                Ripl.should_receive(:start)
         
     | 
| 
       57 
57 
     | 
    
         
             
                @shell.eval_line("_simple |")
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: elasticshell
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.6
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2012-10- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2012-10-29 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: rspec
         
     | 
| 
         @@ -187,7 +187,7 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       187 
187 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       188 
188 
     | 
    
         
             
                  segments:
         
     | 
| 
       189 
189 
     | 
    
         
             
                  - 0
         
     | 
| 
       190 
     | 
    
         
            -
                  hash:  
     | 
| 
      
 190 
     | 
    
         
            +
                  hash: 3786860425467706238
         
     | 
| 
       191 
191 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       192 
192 
     | 
    
         
             
              none: false
         
     | 
| 
       193 
193 
     | 
    
         
             
              requirements:
         
     |