remote-session 0.0.1 → 0.0.2
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.md +2 -2
 - data/lib/remote/session.rb +46 -12
 - data/lib/remote/session/version.rb +1 -1
 - data/remote-session.gemspec +1 -0
 - data/spec/unit/session_spec.rb +14 -12
 - metadata +20 -4
 
    
        data/README.md
    CHANGED
    
    | 
         @@ -17,7 +17,7 @@ remote-session [
         
     | 
| 
       36 
36 
     | 
    
         
             
            puts r.run( 'pwd' )
         
     | 
    
        data/lib/remote/session.rb
    CHANGED
    
    | 
         @@ -1,4 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'remote/session/version'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'net/sftp'
         
     | 
| 
       2 
3 
     | 
    
         
             
            require 'net/ssh'
         
     | 
| 
       3 
4 
     | 
    
         | 
| 
       4 
5 
     | 
    
         
             
            module Remote
         
     | 
| 
         @@ -13,13 +14,24 @@ module Remote 
     | 
|
| 
       13 
14 
     | 
    
         
             
                  rs.close
         
     | 
| 
       14 
15 
     | 
    
         
             
                end
         
     | 
| 
       15 
16 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
                attr_accessor :host 
     | 
| 
      
 17 
     | 
    
         
            +
                attr_accessor :host
         
     | 
| 
      
 18 
     | 
    
         
            +
                attr_accessor :username
         
     | 
| 
      
 19 
     | 
    
         
            +
                attr_accessor :password
         
     | 
| 
      
 20 
     | 
    
         
            +
                attr_accessor :port
         
     | 
| 
      
 21 
     | 
    
         
            +
                attr_accessor :private_key
         
     | 
| 
      
 22 
     | 
    
         
            +
                attr_accessor :prompts
         
     | 
| 
      
 23 
     | 
    
         
            +
                attr_accessor :session
         
     | 
| 
       17 
24 
     | 
    
         | 
| 
       18 
25 
     | 
    
         
             
                def initialize( host, options = {} )
         
     | 
| 
       19 
     | 
    
         
            -
                  @ 
     | 
| 
       20 
     | 
    
         
            -
                  @ 
     | 
| 
       21 
     | 
    
         
            -
                  @ 
     | 
| 
       22 
     | 
    
         
            -
                  @password 
     | 
| 
      
 26 
     | 
    
         
            +
                  @session       = nil
         
     | 
| 
      
 27 
     | 
    
         
            +
                  @host          = host
         
     | 
| 
      
 28 
     | 
    
         
            +
                  @username      = options[ :username      ] || ENV[ 'USER' ]
         
     | 
| 
      
 29 
     | 
    
         
            +
                  @password      = options[ :password      ]
         
     | 
| 
      
 30 
     | 
    
         
            +
                  @port          = options[ :port          ]
         
     | 
| 
      
 31 
     | 
    
         
            +
                  @private_key   = options[ :private_key   ]
         
     | 
| 
      
 32 
     | 
    
         
            +
                  @prompts       = options[ :prompts       ] || {}
         
     | 
| 
      
 33 
     | 
    
         
            +
                  @sudo_password = options[ :sudo_password ]
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
       23 
35 
     | 
    
         
             
                  connect
         
     | 
| 
       24 
36 
     | 
    
         
             
                end
         
     | 
| 
       25 
37 
     | 
    
         | 
| 
         @@ -29,7 +41,7 @@ module Remote 
     | 
|
| 
       29 
41 
     | 
    
         
             
                  puts @session.exec!( command )
         
     | 
| 
       30 
42 
     | 
    
         
             
                end
         
     | 
| 
       31 
43 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
                def sudo( command 
     | 
| 
      
 44 
     | 
    
         
            +
                def sudo( command )
         
     | 
| 
       33 
45 
     | 
    
         
             
                  raise "Session is closed" if @session.nil?
         
     | 
| 
       34 
46 
     | 
    
         | 
| 
       35 
47 
     | 
    
         
             
                  puts "@#{ @host }: sudo #{ command }"
         
     | 
| 
         @@ -37,7 +49,7 @@ module Remote 
     | 
|
| 
       37 
49 
     | 
    
         
             
                    ch.request_pty do |ch, success|
         
     | 
| 
       38 
50 
     | 
    
         
             
                      raise "Could not obtain pty" if ! success
         
     | 
| 
       39 
51 
     | 
    
         | 
| 
       40 
     | 
    
         
            -
                      channel_exec ch, command 
     | 
| 
      
 52 
     | 
    
         
            +
                      channel_exec ch, command
         
     | 
| 
       41 
53 
     | 
    
         
             
                    end
         
     | 
| 
       42 
54 
     | 
    
         
             
                  end
         
     | 
| 
       43 
55 
     | 
    
         
             
                  @session.loop
         
     | 
| 
         @@ -48,28 +60,50 @@ module Remote 
     | 
|
| 
       48 
60 
     | 
    
         
             
                  @session = nil
         
     | 
| 
       49 
61 
     | 
    
         
             
                end
         
     | 
| 
       50 
62 
     | 
    
         | 
| 
      
 63 
     | 
    
         
            +
                def sudo_put( remote_path, &block )
         
     | 
| 
      
 64 
     | 
    
         
            +
                  temp_path = "/tmp/remote-session.#{ Time.now.to_f }"
         
     | 
| 
      
 65 
     | 
    
         
            +
                  run "mkdir #{ temp_path }"
         
     | 
| 
      
 66 
     | 
    
         
            +
                  run "chmod 0700 #{ temp_path }"
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                  temp_file = File.join( temp_path, File.basename( remote_path ) )
         
     | 
| 
      
 69 
     | 
    
         
            +
                  put temp_file, &block
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                  sudo "cp -f #{ temp_file } #{ remote_path }"
         
     | 
| 
      
 72 
     | 
    
         
            +
                  run "rm -rf #{ temp_path }"
         
     | 
| 
      
 73 
     | 
    
         
            +
                end
         
     | 
| 
      
 74 
     | 
    
         
            +
                
         
     | 
| 
      
 75 
     | 
    
         
            +
                def put( remote_path, &block )
         
     | 
| 
      
 76 
     | 
    
         
            +
                  sftp = Net::SFTP::Session.new( @session ).connect!
         
     | 
| 
      
 77 
     | 
    
         
            +
                  sftp.file.open( remote_path, 'w' ) do |f|
         
     | 
| 
      
 78 
     | 
    
         
            +
                    f.puts block.call
         
     | 
| 
      
 79 
     | 
    
         
            +
                  end
         
     | 
| 
      
 80 
     | 
    
         
            +
                  sftp.close_channel
         
     | 
| 
      
 81 
     | 
    
         
            +
                end
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
       51 
83 
     | 
    
         
             
                private
         
     | 
| 
       52 
84 
     | 
    
         | 
| 
       53 
85 
     | 
    
         
             
                def ssh_options
         
     | 
| 
       54 
86 
     | 
    
         
             
                  s = {}
         
     | 
| 
       55 
     | 
    
         
            -
                  s[ :password ] = @password 
     | 
| 
      
 87 
     | 
    
         
            +
                  s[ :password ] = @password        if @password
         
     | 
| 
      
 88 
     | 
    
         
            +
                  s[ :keys     ] = [ @private_key ] if @private_key
         
     | 
| 
      
 89 
     | 
    
         
            +
                  s[ :port     ] = @port            if @port
         
     | 
| 
       56 
90 
     | 
    
         
             
                  s
         
     | 
| 
       57 
91 
     | 
    
         
             
                end
         
     | 
| 
       58 
92 
     | 
    
         | 
| 
       59 
93 
     | 
    
         
             
                def connect
         
     | 
| 
       60 
     | 
    
         
            -
                  @session = Net::SSH.start( @host, @ 
     | 
| 
      
 94 
     | 
    
         
            +
                  @session = Net::SSH.start( @host, @username, ssh_options )
         
     | 
| 
       61 
95 
     | 
    
         
             
                end
         
     | 
| 
       62 
96 
     | 
    
         | 
| 
       63 
     | 
    
         
            -
                def channel_exec( ch, command 
     | 
| 
      
 97 
     | 
    
         
            +
                def channel_exec( ch, command )
         
     | 
| 
       64 
98 
     | 
    
         
             
                  ch.exec "sudo -p '#{ SUDO_PROMPT }' #{ command }" do |ch, success|
         
     | 
| 
       65 
99 
     | 
    
         
             
                    raise "Could not execute sudo command: #{ command }" if ! success
         
     | 
| 
       66 
100 
     | 
    
         | 
| 
       67 
101 
     | 
    
         
             
                    ch.on_data do | ch, data |
         
     | 
| 
       68 
102 
     | 
    
         
             
                      if data =~ Regexp.new( SUDO_PROMPT )
         
     | 
| 
       69 
     | 
    
         
            -
                        ch.send_data "#{ @ 
     | 
| 
      
 103 
     | 
    
         
            +
                        ch.send_data "#{ @sudo_password }\n"
         
     | 
| 
       70 
104 
     | 
    
         
             
                      else
         
     | 
| 
       71 
105 
     | 
    
         
             
                        prompt_matched = false
         
     | 
| 
       72 
     | 
    
         
            -
                        prompts.each_pair do | prompt, send |
         
     | 
| 
      
 106 
     | 
    
         
            +
                        @prompts.each_pair do | prompt, send |
         
     | 
| 
       73 
107 
     | 
    
         
             
                          if data =~ Regexp.new( prompt )
         
     | 
| 
       74 
108 
     | 
    
         
             
                            ch.send_data "#{ send }\n"
         
     | 
| 
       75 
109 
     | 
    
         
             
                            prompt_matched = true
         
     | 
    
        data/remote-session.gemspec
    CHANGED
    
    | 
         @@ -17,6 +17,7 @@ Run commands as the logged on user, or via sudo as any permitetd user (defaults 
     | 
|
| 
       17 
17 
     | 
    
         
             
              gem.version       = Remote::Session::VERSION
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
              gem.add_runtime_dependency 'rake', '>= 0.8.7'
         
     | 
| 
      
 20 
     | 
    
         
            +
              gem.add_runtime_dependency 'net-sftp'
         
     | 
| 
       20 
21 
     | 
    
         
             
              gem.add_runtime_dependency 'net-ssh'
         
     | 
| 
       21 
22 
     | 
    
         | 
| 
       22 
23 
     | 
    
         
             
              gem.add_development_dependency 'rspec',  '>= 2.3.0'
         
     | 
    
        data/spec/unit/session_spec.rb
    CHANGED
    
    | 
         @@ -9,12 +9,12 @@ describe Remote::Session do 
     | 
|
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
                before :each do
         
     | 
| 
       11 
11 
     | 
    
         
             
                  Net::SSH.stub!( :start )
         
     | 
| 
       12 
     | 
    
         
            -
                  @ 
     | 
| 
      
 12 
     | 
    
         
            +
                  @username         = ENV[ 'USER' ]
         
     | 
| 
       13 
13 
     | 
    
         
             
                  ENV[ 'USER' ] = 'the_user'
         
     | 
| 
       14 
14 
     | 
    
         
             
                end
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
                after :each do
         
     | 
| 
       17 
     | 
    
         
            -
                  ENV[ 'USER' ] = @ 
     | 
| 
      
 17 
     | 
    
         
            +
                  ENV[ 'USER' ] = @username
         
     | 
| 
       18 
18 
     | 
    
         
             
                end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
                it 'should require a hostname parameter' do
         
     | 
| 
         @@ -29,22 +29,22 @@ describe Remote::Session do 
     | 
|
| 
       29 
29 
     | 
    
         
             
                  Remote::Session.new( TEST_HOST )
         
     | 
| 
       30 
30 
     | 
    
         
             
                end
         
     | 
| 
       31 
31 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
                it ' 
     | 
| 
      
 32 
     | 
    
         
            +
                it 'username should default to the current user' do
         
     | 
| 
       33 
33 
     | 
    
         
             
                  Net::SSH.should_receive( :start ).with( TEST_HOST, 'the_user', {} )
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
       35 
35 
     | 
    
         
             
                  Remote::Session.new( TEST_HOST )
         
     | 
| 
       36 
36 
     | 
    
         
             
                end
         
     | 
| 
       37 
37 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
                it 'should accept  
     | 
| 
      
 38 
     | 
    
         
            +
                it 'should accept username option' do
         
     | 
| 
       39 
39 
     | 
    
         
             
                  Net::SSH.should_receive( :start ).with( TEST_HOST, 'another_user', {} )
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
                  Remote::Session.new( TEST_HOST, : 
     | 
| 
      
 41 
     | 
    
         
            +
                  Remote::Session.new( TEST_HOST, :username => 'another_user' )
         
     | 
| 
       42 
42 
     | 
    
         
             
                end
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
44 
     | 
    
         
             
                it 'should use any supplied password' do
         
     | 
| 
       45 
45 
     | 
    
         
             
                  Net::SSH.should_receive( :start ).with( TEST_HOST, 'another_user', { :password => 'secret' } )
         
     | 
| 
       46 
46 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
                  Remote::Session.new( TEST_HOST, : 
     | 
| 
      
 47 
     | 
    
         
            +
                  Remote::Session.new( TEST_HOST, :username => 'another_user', :password => 'secret' )
         
     | 
| 
       48 
48 
     | 
    
         
             
                end
         
     | 
| 
       49 
49 
     | 
    
         | 
| 
       50 
50 
     | 
    
         
             
              end
         
     | 
| 
         @@ -62,7 +62,7 @@ describe Remote::Session do 
     | 
|
| 
       62 
62 
     | 
    
         
             
                    @ssh.stub!( :close )
         
     | 
| 
       63 
63 
     | 
    
         | 
| 
       64 
64 
     | 
    
         
             
                    called = false
         
     | 
| 
       65 
     | 
    
         
            -
                    Remote::Session.open( TEST_HOST, : 
     | 
| 
      
 65 
     | 
    
         
            +
                    Remote::Session.open( TEST_HOST, :username => 'another_user' ) do | rs |
         
     | 
| 
       66 
66 
     | 
    
         
             
                      called = true
         
     | 
| 
       67 
67 
     | 
    
         
             
                    end
         
     | 
| 
       68 
68 
     | 
    
         | 
| 
         @@ -74,19 +74,19 @@ describe Remote::Session do 
     | 
|
| 
       74 
74 
     | 
    
         | 
| 
       75 
75 
     | 
    
         
             
                    Net::SSH.should_receive( :start ).with( 'host.example.com', 'another_user', {} )
         
     | 
| 
       76 
76 
     | 
    
         | 
| 
       77 
     | 
    
         
            -
                    Remote::Session.open( TEST_HOST, : 
     | 
| 
      
 77 
     | 
    
         
            +
                    Remote::Session.open( TEST_HOST, :username => 'another_user' ) {}
         
     | 
| 
       78 
78 
     | 
    
         
             
                  end
         
     | 
| 
       79 
79 
     | 
    
         | 
| 
       80 
80 
     | 
    
         
             
                  it 'should require a block' do
         
     | 
| 
       81 
81 
     | 
    
         
             
                    expect do
         
     | 
| 
       82 
     | 
    
         
            -
                      Remote::Session.open( TEST_HOST, : 
     | 
| 
      
 82 
     | 
    
         
            +
                      Remote::Session.open( TEST_HOST, :username => 'another_user' )
         
     | 
| 
       83 
83 
     | 
    
         
             
                    end.       to         raise_error( NoMethodError, "undefined method `call' for nil:NilClass" )
         
     | 
| 
       84 
84 
     | 
    
         
             
                  end
         
     | 
| 
       85 
85 
     | 
    
         | 
| 
       86 
86 
     | 
    
         
             
                  it 'should close the connection' do
         
     | 
| 
       87 
87 
     | 
    
         
             
                    @ssh.should_receive( :close )
         
     | 
| 
       88 
88 
     | 
    
         | 
| 
       89 
     | 
    
         
            -
                    Remote::Session.open( TEST_HOST, : 
     | 
| 
      
 89 
     | 
    
         
            +
                    Remote::Session.open( TEST_HOST, :username => 'another_user' ) {}
         
     | 
| 
       90 
90 
     | 
    
         
             
                  end
         
     | 
| 
       91 
91 
     | 
    
         | 
| 
       92 
92 
     | 
    
         
             
                end
         
     | 
| 
         @@ -258,8 +258,9 @@ describe Remote::Session do 
     | 
|
| 
       258 
258 
     | 
    
         | 
| 
       259 
259 
     | 
    
         
             
                          it 'should send the supplied data' do
         
     | 
| 
       260 
260 
     | 
    
         
             
                            @ch.should_receive( :send_data ).with( "this data\n" )
         
     | 
| 
      
 261 
     | 
    
         
            +
                            @rs.prompts[ 'my prompt' ] = 'this data' 
         
     | 
| 
       261 
262 
     | 
    
         | 
| 
       262 
     | 
    
         
            -
                            @rs.sudo( 'pwd' 
     | 
| 
      
 263 
     | 
    
         
            +
                            @rs.sudo( 'pwd' )
         
     | 
| 
       263 
264 
     | 
    
         
             
                          end
         
     | 
| 
       264 
265 
     | 
    
         | 
| 
       265 
266 
     | 
    
         
             
                          it 'should not echo the prompt' do
         
     | 
| 
         @@ -267,8 +268,9 @@ describe Remote::Session do 
     | 
|
| 
       267 
268 
     | 
    
         
             
                            @rs.stub!( :puts ) do | s |
         
     | 
| 
       268 
269 
     | 
    
         
             
                              output << s
         
     | 
| 
       269 
270 
     | 
    
         
             
                            end
         
     | 
| 
      
 271 
     | 
    
         
            +
                            @rs.prompts[ 'my prompt' ] = 'this data' 
         
     | 
| 
       270 
272 
     | 
    
         | 
| 
       271 
     | 
    
         
            -
                            @rs.sudo( 'pwd' 
     | 
| 
      
 273 
     | 
    
         
            +
                            @rs.sudo( 'pwd' )
         
     | 
| 
       272 
274 
     | 
    
         | 
| 
       273 
275 
     | 
    
         
             
                            output.should == ["@#{TEST_HOST}: sudo pwd"]
         
     | 
| 
       274 
276 
     | 
    
         
             
                          end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: remote-session
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.2
         
     | 
| 
       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-05- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2012-05-18 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: rake
         
     | 
| 
         @@ -27,6 +27,22 @@ dependencies: 
     | 
|
| 
       27 
27 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
       28 
28 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       29 
29 
     | 
    
         
             
                    version: 0.8.7
         
     | 
| 
      
 30 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 31 
     | 
    
         
            +
              name: net-sftp
         
     | 
| 
      
 32 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 33 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 34 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 35 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 36 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 37 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 38 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 39 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 40 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 41 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 42 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 43 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 44 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 45 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       30 
46 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       31 
47 
     | 
    
         
             
              name: net-ssh
         
     | 
| 
       32 
48 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -112,7 +128,7 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       112 
128 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       113 
129 
     | 
    
         
             
                  segments:
         
     | 
| 
       114 
130 
     | 
    
         
             
                  - 0
         
     | 
| 
       115 
     | 
    
         
            -
                  hash:  
     | 
| 
      
 131 
     | 
    
         
            +
                  hash: 2675303135346864190
         
     | 
| 
       116 
132 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       117 
133 
     | 
    
         
             
              none: false
         
     | 
| 
       118 
134 
     | 
    
         
             
              requirements:
         
     | 
| 
         @@ -121,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       121 
137 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       122 
138 
     | 
    
         
             
                  segments:
         
     | 
| 
       123 
139 
     | 
    
         
             
                  - 0
         
     | 
| 
       124 
     | 
    
         
            -
                  hash:  
     | 
| 
      
 140 
     | 
    
         
            +
                  hash: 2675303135346864190
         
     | 
| 
       125 
141 
     | 
    
         
             
            requirements: []
         
     | 
| 
       126 
142 
     | 
    
         
             
            rubyforge_project: nowarning
         
     | 
| 
       127 
143 
     | 
    
         
             
            rubygems_version: 1.8.24
         
     |