robotwitter 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: []