robotwitter 0.1.3 → 0.2.0

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/Gemfile CHANGED
@@ -1,11 +1,11 @@
1
- source "http://rubygems.org"
2
- gem "twitter"
3
- gem "sqlite3"
4
- gem "fakeweb"
1
+ source :rubygems
2
+ gem 'twitter'
3
+ gem 'sqlite3'
4
+ gem 'fakeweb'
5
+ gem 'minitest'
6
+ gem 'pry'
5
7
 
6
8
  group :development do
7
- gem "shoulda", ">= 0"
8
- gem "bundler", "~> 1.0.0"
9
- gem "jeweler", "~> 1.5.2"
10
- gem "rcov", ">= 0"
9
+ gem 'shoulda'
10
+ gem 'jeweler'
11
11
  end
data/Rakefile CHANGED
@@ -33,13 +33,6 @@ Rake::TestTask.new(:test) do |test|
33
33
  test.verbose = true
34
34
  end
35
35
 
36
- require 'rcov/rcovtask'
37
- Rcov::RcovTask.new do |test|
38
- test.libs << 'test'
39
- test.pattern = 'test/**/test_*.rb'
40
- test.verbose = true
41
- end
42
-
43
36
  task :default => :test
44
37
 
45
38
  require 'rake/rdoctask'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.2.0
@@ -1,5 +1,5 @@
1
- test_login:
2
- consumer_key: key
3
- consumer_secret: secret
4
- oauth_token: oauth_token
5
- oauth_token_secret: oauth_token
1
+ serialmaniak_ru:
2
+ consumer_key: qhQYAKHy5mVWhdqPD0DX1g
3
+ consumer_secret: bFgbeWrr6y10qtFrC089WswSgbhWdmQPYZxbvB30uwk
4
+ oauth_token: 27295510-cZOZYtSnRHYEdnLyIcEbWPFaDQz0Ev7RdZanUbZY
5
+ oauth_token_secret: 6bIrZX6burEjHS5BMrYcQDBFKvtK2lsr4E2sOcnOQYg
Binary file
@@ -1,5 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'twitter'
3
+ require 'twitter/error/unauthorized'
3
4
  require 'open-uri'
4
5
  require 'yaml'
5
6
  require 'sqlite3'
@@ -16,56 +17,46 @@ module Robotwitter
16
17
  # which returns string
17
18
  # example of getter
18
19
  #
19
- # SQLITE_GETTER = lambda do |s|
20
+ # SQLITE_GETTER = lambda do
20
21
  # db = SQLite3::Database.new("database.db")
21
22
  # db.get_first_row( "select * from table" )
22
23
  # end
23
24
  def initialize(path, section, &getter)
24
- @getter = getter
25
- @followers_ids = nil
26
- @following_ids = nil
27
- @path = path
25
+ @getter, @path, @followers_ids, @following_ids = getter, path, nil, nil
28
26
 
29
27
  @logger = Logger.new('tweelog.txt', 'weekly')
30
28
 
31
- begin
32
- yml = YAML.load_file(path + '/' + "settings.yml")
33
- Twitter.configure do |config|
34
- config.consumer_key = yml[section]['consumer_key']
35
- config.consumer_secret = yml[section]['consumer_secret']
36
- config.oauth_token = yml[section]['oauth_token']
37
- config.oauth_token_secret = yml[section]['oauth_token_secret']
38
- end
39
- @client = Twitter::Client.new
40
- rescue Exception => exception
41
- @logger.error %/error occurred: #{exception.inspect}\n#{exception.backtrace.join("\n")}/
29
+
30
+ path ||= ''
31
+ path += '/' if path != ''
32
+
33
+ yml = YAML.load_file(path + "settings.yml")
34
+ Twitter.configure do |config|
35
+ config.consumer_key = yml[section]['consumer_key']
36
+ config.consumer_secret = yml[section]['consumer_secret']
37
+ config.oauth_token = yml[section]['oauth_token']
38
+ config.oauth_token_secret = yml[section]['oauth_token_secret']
42
39
  end
40
+ @client = Twitter::Client.new
41
+ @search_client = Twitter
43
42
  end
44
43
 
45
44
  # follow who follows me
46
45
  def follow_all_back
47
- get_followers_ids
48
- get_following_ids
49
-
50
- follow_them = @followers_ids - @following_ids
51
- @logger.info 'follows:'
46
+ follow_them = get_followers_ids - get_following_ids
52
47
  follow_them.each do |id|
53
- begin
54
- @client.follow id
55
- rescue
56
- end
57
- @logger.info id
48
+ @client.follow(id)
49
+ @logger.info 'following' + id.to_s
58
50
  end
59
51
  end
60
52
 
61
53
  # string '_msg_ somth'
62
54
  def send_message(pattern)
63
55
  phrase = get_phrase
64
- p phrase
65
56
  return if phrase == ''
66
57
  send = pattern.gsub('_msg_', phrase)
67
- @client.update send
68
- @logger.info send
58
+ @client.update(send)
59
+ @logger.info(send)
69
60
  end
70
61
 
71
62
  def retweet_about(word)
@@ -73,70 +64,54 @@ module Robotwitter
73
64
  init_db
74
65
  search.each do |result|
75
66
  next if @db.retweeted?(result)
76
- retweet result
77
- @db.save_retweet result
78
- @logger.info result['id']
67
+ retweet(result)
68
+ @db.save_retweet(result)
69
+ @logger.info(result['id'])
79
70
  end
80
71
  end
81
72
 
82
73
  # follow who tweet about word
83
74
  def follow_users_tweets_about(word)
84
- users = search_users_tweets_about word
75
+ users = search_users_tweets_about(word)
85
76
 
86
77
  get_followers_ids
87
78
  get_following_ids
88
- @logger.info users
79
+ @logger.info(users)
89
80
  users.each do |user|
90
81
  id = user['from_user_id']
91
82
  name = user['from_user']
92
- begin
93
- if (not @followers_ids.include?(id)) and (not @following_ids.include?(id))
94
- @client.follow name
95
- @logger.info name
96
- end
97
- rescue Exception => msg
98
- @logger.error "Error #{msg}"
83
+ if (not @followers_ids.include?(id)) and (not @following_ids.include?(id))
84
+ @client.follow(name)
85
+ @logger.info(name)
99
86
  end
100
87
  end
101
88
  end
102
89
 
103
90
  #unfollow who not following me
104
91
  def unfollow_users
105
- get_followers_ids
106
- get_following_ids
107
-
108
- unfollow_them = @following_ids - @followers_ids
92
+ unfollow_them = get_following_ids - get_followers_ids
109
93
  unfollow_them.each do |id|
110
- begin
111
- @client.unfollow id
112
- rescue
113
- end
114
- @logger.info id
94
+ @client.unfollow(id)
95
+ @logger.info(id)
115
96
  end
116
97
  end
117
98
 
118
99
  protected
119
100
 
120
101
  def init_db
121
- @db = Robotwitter::Db.new('tweets', @path) if @db.nil?
122
- @db
102
+ @db ||= Robotwitter::Db.new('tweets', @path)
123
103
  end
124
104
 
125
- # get phrase
105
+ # get phrase from internal resource
126
106
  def get_phrase
127
107
  @getter.call(self)
128
108
  rescue
129
109
  ""
130
110
  end
131
111
 
132
- # ищем пользователей, которые пишут о
112
+ # search for users tweets about
133
113
  def search_users_tweets_about(word, count = 5)
134
- resp = Twitter::Search.new.containing(word).locale("ru").no_retweets.per_page(count).fetch
135
- if resp.is_a?(Twitter::Unauthorized)
136
- @logger.error 'unauthorized'
137
- return []
138
- end
139
- resp
114
+ @search_client.search(word, :locale => 'ru', :result_type => 'resent', :rpp => count)
140
115
  end
141
116
 
142
117
  # get follower ids
@@ -152,20 +127,19 @@ module Robotwitter
152
127
  if @following_ids.nil?
153
128
  @following_ids = @client.friend_ids['ids']
154
129
  end
130
+ @following_ids
155
131
  end
156
132
 
157
- # ретвитим
133
+ # retweet
158
134
  # result - hash от поиска
159
135
  def retweet(result)
160
- begin
161
- @client.retweet(result['id'])
162
- rescue => desc
163
- @logger.error 'error: ' + desc.inspect
164
- end
136
+ @client.retweet(result['id'])
137
+ rescue => detail
138
+ @logger.error(detail)
165
139
  end
166
140
 
167
141
  def rate_limit
168
- @logger.error @client.rate_limit_status.remaining_hits.to_s + " Twitter API request(s) remaining this hour"
142
+ @logger.error(@client.rate_limit_status.remaining_hits.to_s + ' Twitter API request(s) remaining this hour')
169
143
  end
170
144
  end
171
145
  end
@@ -11,12 +11,12 @@ module Robotwitter
11
11
  def create_db(name)
12
12
  db = SQLite3::Database.new("#{name}.db")
13
13
 
14
- sql = <<SQL
15
- create table #{TABLENAME} (
16
- id integer PRIMARY KEY AUTOINCREMENT,
17
- tweet_id string
18
- );
19
- SQL
14
+ sql = <<-SQL
15
+ create table #{TABLENAME} (
16
+ id integer PRIMARY KEY AUTOINCREMENT,
17
+ tweet_id string
18
+ );
19
+ SQL
20
20
 
21
21
  db.execute_batch(sql)
22
22
  end
@@ -36,7 +36,7 @@ SQL
36
36
  # сохраняем ретвитт, чтобы не ретвиттить снова
37
37
  # result - результат twitter.search
38
38
  def save_retweet result
39
- id = result['id_str']
39
+ id = result.attrs['id_str']
40
40
  sql = "insert into #{TABLENAME} (tweet_id) values (#{id})"
41
41
  @db.query(sql)
42
42
  end
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{robotwitter}
8
- s.version = "0.1.3"
7
+ s.name = "robotwitter"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{Krivich Ekaterina}]
12
- s.date = %q{2011-08-20}
13
- s.description = %q{automate twitter tasks, such as retweetting, following, unfollowing}
14
- s.email = %q{krivich.ekaterina@gmail.com}
11
+ s.authors = ["Krivich Ekaterina"]
12
+ s.date = "2012-03-13"
13
+ s.description = "automate twitter tasks, such as retweetting, following, unfollowing"
14
+ s.email = "krivich.ekaterina@gmail.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
17
17
  "README.rdoc"
@@ -33,15 +33,11 @@ Gem::Specification.new do |s|
33
33
  "spec/robotwitter/robotwitter_spec.rb",
34
34
  "spec/spec_helper.rb"
35
35
  ]
36
- s.homepage = %q{http://github.com/kiote/robotwitter}
37
- s.licenses = [%q{MIT}]
38
- s.require_paths = [%q{lib}]
39
- s.rubygems_version = %q{1.8.6}
40
- s.summary = %q{automate some twitter tasks}
41
- s.test_files = [
42
- "spec/robotwitter/robotwitter_spec.rb",
43
- "spec/spec_helper.rb"
44
- ]
36
+ s.homepage = "http://github.com/kiote/robotwitter"
37
+ s.licenses = ["MIT"]
38
+ s.require_paths = ["lib"]
39
+ s.rubygems_version = "1.8.17"
40
+ s.summary = "automate some twitter tasks"
45
41
 
46
42
  if s.respond_to? :specification_version then
47
43
  s.specification_version = 3
@@ -50,27 +46,27 @@ Gem::Specification.new do |s|
50
46
  s.add_runtime_dependency(%q<twitter>, [">= 0"])
51
47
  s.add_runtime_dependency(%q<sqlite3>, [">= 0"])
52
48
  s.add_runtime_dependency(%q<fakeweb>, [">= 0"])
49
+ s.add_runtime_dependency(%q<minitest>, [">= 0"])
50
+ s.add_runtime_dependency(%q<pry>, [">= 0"])
53
51
  s.add_development_dependency(%q<shoulda>, [">= 0"])
54
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
55
- s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
56
- s.add_development_dependency(%q<rcov>, [">= 0"])
52
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
57
53
  else
58
54
  s.add_dependency(%q<twitter>, [">= 0"])
59
55
  s.add_dependency(%q<sqlite3>, [">= 0"])
60
56
  s.add_dependency(%q<fakeweb>, [">= 0"])
57
+ s.add_dependency(%q<minitest>, [">= 0"])
58
+ s.add_dependency(%q<pry>, [">= 0"])
61
59
  s.add_dependency(%q<shoulda>, [">= 0"])
62
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
63
- s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
64
- s.add_dependency(%q<rcov>, [">= 0"])
60
+ s.add_dependency(%q<jeweler>, [">= 0"])
65
61
  end
66
62
  else
67
63
  s.add_dependency(%q<twitter>, [">= 0"])
68
64
  s.add_dependency(%q<sqlite3>, [">= 0"])
69
65
  s.add_dependency(%q<fakeweb>, [">= 0"])
66
+ s.add_dependency(%q<minitest>, [">= 0"])
67
+ s.add_dependency(%q<pry>, [">= 0"])
70
68
  s.add_dependency(%q<shoulda>, [">= 0"])
71
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
72
- s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
73
- s.add_dependency(%q<rcov>, [">= 0"])
69
+ s.add_dependency(%q<jeweler>, [">= 0"])
74
70
  end
75
71
  end
76
72
 
@@ -1,60 +1,112 @@
1
- require "spec_helper"
1
+ $LOAD_PATH << File.expand_path('../../', __FILE__)
2
+ require 'spec_helper'
2
3
 
3
- describe "Robotwitter" do
4
-
5
- before do
6
- FakeWeb.register_uri(:get, %r|https://api\.twitter\.com/1/followers/ids\.json|,
7
- :body => %|{"ids": [1,2,3]}|)
8
- # GET https://api.twitter.com/1/friends/ids.json
9
- FakeWeb.register_uri(:get, %r|https://api\.twitter\.com/1/friends/ids\.json|,
10
- :body => %|{"ids": [1,2,3]}|)
11
- # POST https://api.twitter.com/1/statuses/update.json
12
- FakeWeb.register_uri(:post, %r|https://api\.twitter\.com/1/statuses/update\.json|,
13
- :body => '')
14
- # POST https://api.twitter.com/1/statuses/retweet/
15
- FakeWeb.register_uri(:post, %r|https://api\.twitter\.com/1/statuses/retweet|,
16
- :body => '')
4
+ describe Robotwitter do
5
+ def mock_client(object)
6
+ @mock = MiniTest::Mock.new
7
+ object.instance_variable_set(:@client, @mock)
17
8
  end
18
9
 
19
- POSTER = lambda do |l|
20
- 'some tweet'
10
+ def follower_and_friends
11
+ ids = [1,2,3,4]
12
+ @mock.expect(:follower_ids, 'ids' => ids)
13
+ @mock.expect(:friend_ids, 'ids' => [4,5,6,7,8])
14
+ ids
21
15
  end
22
16
 
23
- before(:each) do
24
- @settings_path = File.expand_path('../../../example', __FILE__)
25
- @client = Robotwitter::Robot.new @settings_path, 'test_login', &POSTER
17
+ def tweet_params
18
+ ['id' => 'kolyan', 'from_user_id' => 'vasyan_id', 'from_user' => 'vasyan']
26
19
  end
27
20
 
28
- it "should create new object on right init params" do
29
- @client.class.to_s.should eq("Robotwitter::Robot")
21
+ before do
22
+ @robotwitter = Robotwitter::Robot.new('', 'test_login') do
23
+ 'hello'
24
+ end
25
+ mock_client(@robotwitter)
30
26
  end
31
27
 
32
- it "should follows those who follows me" do
33
- @client.follow_all_back
34
- end
28
+ # мы фалловим 5 пользователей: [4,5,6,7,8]
29
+ # нас фалловят 4: [1,2,3,4]
30
+ # follow_all_back должна зафалловить 3х пользователей: [1,2,3]
31
+ describe 'follow_all_back' do
32
+ before do
33
+ ids = follower_and_friends
34
+ ids.pop
35
+ ids.each { |id| @mock.expect(:follow, [], [id]) }
36
+ end
35
37
 
36
- it "should tweet a message" do
37
- @client.send_message('_msg_ #hash')
38
+ it 'should follow those, who follows me' do
39
+ @robotwitter.follow_all_back
40
+ end
38
41
  end
39
42
 
40
- it "should retweet about word" do
41
- @client.retweet_about('something')
42
- end
43
+ # тестируем отправку сообщений
44
+ # перед отправкой сообщение получается из внешнего источника
45
+ describe 'send_message' do
46
+ before do
47
+ @mock.expect(:update, nil, ['hello there'])
48
+ end
43
49
 
44
- it "should follow users tweets about" do
45
- @client.follow_users_tweets_about('something')
50
+ it 'should successfully sends message' do
51
+ @robotwitter.send_message('_msg_ there')
52
+ end
46
53
  end
47
54
 
48
- it "should unfollow users who did not following me" do
49
- @client.unfollow_users
55
+ describe 'containing' do
56
+ # сначала мокаем search_client
57
+ # он вызывает кучу методов через method chaining и возвращает id твитта
58
+ before do
59
+ sk = MiniTest::Mock.new
60
+ sk.expect(:search, tweet_params, %w/hell/)
61
+ @robotwitter.instance_variable_set(:@search_client, sk)
62
+ end
63
+
64
+ # тестируем ретвит о каком-то слове
65
+ describe 'retweet_about' do
66
+ # мокаем сохраниение в базе
67
+ before do
68
+ db = MiniTest::Mock.new
69
+ db.expect(:nil?, false)
70
+ db.expect(:retweeted?, false, tweet_params)
71
+ db.expect(:save_retweet, false, tweet_params)
72
+
73
+ @robotwitter.instance_variable_set(:@db, db)
74
+ @mock.expect(:retweet, nil, %w/kolyan/)
75
+ end
76
+
77
+ it 'should retweet' do
78
+ @robotwitter.retweet_about('hell')
79
+ end
80
+ end
81
+
82
+ # тестируем фолловинг пользователей, которые пишут о...
83
+ describe 'follow_users_tweets_about' do
84
+ before do
85
+ follower_and_friends
86
+ @mock.expect(:follow, [], ['vasyan'])
87
+ end
88
+
89
+ it 'should follow users' do
90
+ @robotwitter.follow_users_tweets_about('hell')
91
+ end
92
+ end
50
93
  end
51
94
 
52
- it "should not tweet if phrase is empty" do
53
- EMPTY = lambda do
54
- ""
95
+ # мы фалловим 5 пользователей: [4,5,6,7,8]
96
+ # нас фалловят 4: [1,2,3,4]
97
+ # follow_all_back должна отфалловить 3х пользователей: [1,2,3]
98
+ describe 'unfollow_users' do
99
+ before do
100
+ follower_and_friends
101
+ (1..3).to_a.map {|i| @mock.expect(:unfollow, [], [i])}
55
102
  end
56
103
 
57
- client = Robotwitter::Robot.new @settings_path, 'test_login', &EMPTY
58
- client.send_message('_msg_ #hash')
104
+ it 'should unfollow' do
105
+ @robotwitter.unfollow_users
106
+ end
107
+ end
108
+
109
+ after do
110
+ @mock.verify
59
111
  end
60
112
  end
@@ -1,7 +1,7 @@
1
- $:.unshift(File.dirname(__FILE__))
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
1
+ $LOAD_PATH << File.expand_path('../../lib', __FILE__)
2
+ require 'robotwitter'
3
+
4
+ require 'minitest/autorun'
5
+ require 'minitest/mock'
6
+ require 'pry'
3
7
 
4
- require 'twitter'
5
- require 'rspec'
6
- require 'fakeweb'
7
- require 'robotwitter'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: robotwitter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-08-20 00:00:00.000000000Z
12
+ date: 2012-03-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: twitter
16
- requirement: &70244028149820 !ruby/object:Gem::Requirement
16
+ requirement: &70334826215500 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70244028149820
24
+ version_requirements: *70334826215500
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: sqlite3
27
- requirement: &70244028149300 !ruby/object:Gem::Requirement
27
+ requirement: &70334826214720 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70244028149300
35
+ version_requirements: *70334826214720
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: fakeweb
38
- requirement: &70244028148780 !ruby/object:Gem::Requirement
38
+ requirement: &70334826214180 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,43 +43,43 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70244028148780
46
+ version_requirements: *70334826214180
47
47
  - !ruby/object:Gem::Dependency
48
- name: shoulda
49
- requirement: &70244028148280 !ruby/object:Gem::Requirement
48
+ name: minitest
49
+ requirement: &70334826211800 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- type: :development
55
+ type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70244028148280
57
+ version_requirements: *70334826211800
58
58
  - !ruby/object:Gem::Dependency
59
- name: bundler
60
- requirement: &70244028147780 !ruby/object:Gem::Requirement
59
+ name: pry
60
+ requirement: &70334826210940 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
- - - ~>
63
+ - - ! '>='
64
64
  - !ruby/object:Gem::Version
65
- version: 1.0.0
66
- type: :development
65
+ version: '0'
66
+ type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70244028147780
68
+ version_requirements: *70334826210940
69
69
  - !ruby/object:Gem::Dependency
70
- name: jeweler
71
- requirement: &70244028147300 !ruby/object:Gem::Requirement
70
+ name: shoulda
71
+ requirement: &70334826188940 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
- - - ~>
74
+ - - ! '>='
75
75
  - !ruby/object:Gem::Version
76
- version: 1.5.2
76
+ version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70244028147300
79
+ version_requirements: *70334826188940
80
80
  - !ruby/object:Gem::Dependency
81
- name: rcov
82
- requirement: &70244028146820 !ruby/object:Gem::Requirement
81
+ name: jeweler
82
+ requirement: &70334826187180 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70244028146820
90
+ version_requirements: *70334826187180
91
91
  description: automate twitter tasks, such as retweetting, following, unfollowing
92
92
  email: krivich.ekaterina@gmail.com
93
93
  executables: []
@@ -126,7 +126,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
126
  version: '0'
127
127
  segments:
128
128
  - 0
129
- hash: 3642077533077290635
129
+ hash: 1002785137624157305
130
130
  required_rubygems_version: !ruby/object:Gem::Requirement
131
131
  none: false
132
132
  requirements:
@@ -135,10 +135,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
135
  version: '0'
136
136
  requirements: []
137
137
  rubyforge_project:
138
- rubygems_version: 1.8.6
138
+ rubygems_version: 1.8.17
139
139
  signing_key:
140
140
  specification_version: 3
141
141
  summary: automate some twitter tasks
142
- test_files:
143
- - spec/robotwitter/robotwitter_spec.rb
144
- - spec/spec_helper.rb
142
+ test_files: []