qiita_mail 0.0.2 → 0.1.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/Rakefile CHANGED
@@ -1 +1,9 @@
1
+ require "rubygems"
1
2
  require "bundler/gem_tasks"
3
+ require 'rake/testtask'
4
+
5
+ Rake::TestTask.new(:test) do |test|
6
+ test.libs << 'lib' << 'test'
7
+ test.test_files = FileList['test/**/test_*.rb']
8
+ test.verbose = true
9
+ end
@@ -5,14 +5,30 @@
5
5
  # @author ongaeshi
6
6
  # @date 2012/10/12
7
7
 
8
- require 'qiita_mail'
8
+ require 'rubygems'
9
9
  require 'thor'
10
+ require 'qiita_mail/cli_core'
10
11
 
11
12
  module QiitaMail
12
13
  class CLI < Thor
13
- desc "red WORD", "red words print."
14
- def red(word)
15
- say(word, :red)
14
+ desc "init", "Init setting."
15
+ def init
16
+ CliCore.new.init
17
+ end
18
+
19
+ desc "deliver", "Deliver mail."
20
+ def deliver
21
+ CliCore.new.deliver
22
+ end
23
+
24
+ desc "html [filename]", "Write html."
25
+ def html(filename = nil)
26
+ CliCore.new.file(:html, filename)
27
+ end
28
+
29
+ desc "text [filename]", "Write text format."
30
+ def text(filename = nil)
31
+ CliCore.new.file(:text, filename)
16
32
  end
17
33
  end
18
34
  end
@@ -0,0 +1,87 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief
5
+ # @author ongaeshi
6
+ # @date 2012/10/23
7
+
8
+ require 'qiita_mail/selector'
9
+ require 'qiita_mail/format_text'
10
+ require 'qiita_mail/format_html'
11
+ require 'qiita_mail/mailer'
12
+ require 'qiita_mail/storage'
13
+ require 'qiita_mail/settings'
14
+
15
+ module QiitaMail
16
+ class CliCore
17
+ def initialize
18
+ @settings = Settings.new
19
+ @storage = Storage.new
20
+ end
21
+
22
+ def init
23
+ if (@settings.empty?)
24
+ @settings.save
25
+ puts "Create -> #{Settings.default_filename}"
26
+ puts "Please edit YAML settings!"
27
+ else
28
+ puts "Already exists '#{Settings.default_filename}'."
29
+ puts "Please edit YAML settings!"
30
+ end
31
+ end
32
+
33
+ def deliver
34
+ # ピックアップ
35
+ puts "Pickup <---- Qiita.com"
36
+ mail_body = pickup_and_format(:html)
37
+
38
+ # メールの送信
39
+ puts "Send mail -> #{@settings.email}"
40
+ mailer = Mailer.new(@settings.email, mail_body)
41
+ mailer.deliver
42
+ end
43
+
44
+ def file(format, filename = nil)
45
+ # ピックアップ
46
+ puts "Pickup <------ Qiita.com"
47
+ mail_body = pickup_and_format(format)
48
+
49
+ # ファイルに書き込み
50
+ puts "Write '#{format.to_s}' -> #{filename}"
51
+ write_or_puts(filename, mail_body)
52
+ end
53
+
54
+ private
55
+
56
+ def pickup_and_format(kind)
57
+ # 記事をピックアップ
58
+ selector = Selector.new(@settings, @storage)
59
+ pickup_items = selector.pickup(5)
60
+
61
+ # ピックアップした記事をストレージに記録
62
+ pickup_items.each do |item|
63
+ @storage.add_reading(item.uuid)
64
+ end
65
+ @storage.save
66
+
67
+ # テキスト整形
68
+ case kind
69
+ when :html
70
+ FormatHTML.new(pickup_items).to_s
71
+ when :text
72
+ FormatText.new(pickup_items).to_s
73
+ end
74
+ end
75
+
76
+ def write_or_puts(filename, str)
77
+ if (filename)
78
+ open(filename, "w") do |f|
79
+ f.write str
80
+ end
81
+ else
82
+ puts str
83
+ end
84
+ end
85
+ end
86
+ end
87
+
@@ -0,0 +1,51 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief
5
+ # @author ongaeshi
6
+ # @date 2012/10/13
7
+
8
+ require 'rubygems'
9
+ require 'qiita'
10
+ require 'nokogiri'
11
+
12
+ module QiitaMail
13
+ class FormatHTML
14
+ def initialize(items)
15
+ @items = items
16
+ end
17
+
18
+ HEADER = <<EOF
19
+ <!DOCTYPE html>
20
+ <html>
21
+ <head>
22
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8">
23
+ <title>Qiita Mail</title>
24
+ </head>
25
+ <body style="color:#000000; font-size:14px;">
26
+ <div id="banner" style="font-size: 36px; color:#FFFFFF; background-color:#5ABB0E">QiitaMail</div>
27
+ <p>こんにちは!</p>
28
+ <p><a href="http://qiita.com">Qiita</a>で今話題になっている記事をお届けします。</p>
29
+ EOF
30
+
31
+ FOOTER = <<EOF
32
+ </body>
33
+ </html>
34
+ EOF
35
+
36
+ def to_s
37
+ HEADER + @items.map {|item|
38
+ summary = Nokogiri::HTML(item.body).inner_text
39
+ summary = summary[0..200] + '...' if summary.length > 200
40
+ summary = summary.gsub("\n", "<br>")
41
+
42
+ <<EOF
43
+ <hr>
44
+ <div id="title" style="font-size: 28px;"><img src="#{item.user.profile_image_url}" style="margin-right: 5px; width: 72px;"/><a href="#{item.url}" style="color:#2C6EBD; text-decoration:none;">#{item.title}</a></div>
45
+ <div id="summary" style="background-color:#FCFCFC; border-style: solid; border-width: 1px; border-color: #DDDDDD; margin: 10px 5px; padding: 10px;">#{summary} <a href="#{item.url}">続きを読む</a> </div>
46
+ <div id="footer">ストック(#{item.stock_count}) コメント(#{item.comment_count}) #{item.created_at_in_words}</div>
47
+ EOF
48
+ }.join("\n") + FOOTER
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,28 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief
5
+ # @author ongaeshi
6
+ # @date 2012/10/13
7
+
8
+ require 'rubygems'
9
+ require 'qiita'
10
+ require 'pp'
11
+
12
+ module QiitaMail
13
+ class FormatText
14
+ def initialize(items)
15
+ @items = items
16
+ end
17
+
18
+ def to_s
19
+ @items.map {|item|
20
+ <<EOF
21
+ #{item.title}
22
+ #{item.url}
23
+ ストック(#{item.stock_count}) コメント(#{item.comment_count}) #{item.created_at_in_words}
24
+ EOF
25
+ }.join("\n")
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,35 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief
5
+ # @author ongaeshi
6
+ # @date 2012/10/13
7
+
8
+ require 'rubygems'
9
+ require 'mail'
10
+
11
+ module QiitaMail
12
+ class Mailer
13
+ def initialize(to, body)
14
+ @mail = Mail.new do
15
+ to to
16
+ subject 'Qiita Mail'
17
+ # body mail_body
18
+ end
19
+
20
+ @mail.charset = 'utf-8'
21
+
22
+ @mail.html_part = Mail::Part.new {
23
+ content_type 'text/html; charset=UTF-8'
24
+ body body
25
+ }
26
+
27
+ @mail.delivery_method :sendmail
28
+ end
29
+
30
+ def deliver
31
+ @mail.deliver
32
+ end
33
+ end
34
+ end
35
+
@@ -0,0 +1,30 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief
5
+ # @author ongaeshi
6
+ # @date 2012/10/21
7
+
8
+ require 'rubygems'
9
+ require 'hashie'
10
+
11
+ module QiitaMail
12
+ module MarshalFile
13
+ module_function
14
+
15
+ def save(filename, obj)
16
+ # puts "MarshalFile#save -> #{filename}"
17
+ open(filename, "w") do |f|
18
+ f.write Marshal.dump(obj)
19
+ end
20
+ end
21
+
22
+ def load(filename)
23
+ # puts "MarshalFile#load <- #{filename}"
24
+ open(filename) do |f|
25
+ Marshal.load(f.read)
26
+ end
27
+ end
28
+ end
29
+ end
30
+
@@ -0,0 +1,20 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief
5
+ # @author ongaeshi
6
+ # @date 2012/10/27
7
+
8
+ require 'rubygems'
9
+ require 'qiita'
10
+
11
+ module Qiita
12
+ class Client
13
+ module Items
14
+ def items(params)
15
+ get "/items", params
16
+ end
17
+ end
18
+ end
19
+ end
20
+
@@ -0,0 +1,124 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief
5
+ # @author ongaeshi
6
+ # @date 2012/10/13
7
+
8
+ require 'rubygems'
9
+ require 'qiita_mail/marshal_file'
10
+ require 'qiita_mail/qiita_custom'
11
+
12
+ module QiitaMail
13
+ CACHE_FILE = File.join(File.dirname(__FILE__), '../../test/data/pickup_cache.marshal')
14
+
15
+ class Selector
16
+ # -----------------------
17
+ # パラメータ
18
+
19
+ TOP_BONUS = 30
20
+ PER_PAGE = 40
21
+
22
+ # デバッグ用
23
+ USE_CACHE = false # デバッグ用のキャッシュからデータをロードする(高速)
24
+
25
+ # -----------------------
26
+
27
+ def initialize(settings, storage)
28
+ @settings = settings
29
+ @storage = storage
30
+ end
31
+
32
+ def pickup(num = 5)
33
+ # 候補記事をピックアップ
34
+ container = pickup_in
35
+
36
+ puts "Calculate Score .."
37
+
38
+ # 既読記事は除外
39
+ container.each_with_index do |items, index|
40
+ container[index].delete_if do |item|
41
+ @storage.reading? item.uuid
42
+ end
43
+ end
44
+
45
+ # ScoredItemに変換、スコア順にソート
46
+ container = container.map {|items| items.map {|item| ScoredItem.new item}.sort.reverse }
47
+
48
+ # ボーナス加算
49
+ container.each do |items|
50
+ items[0].add_score(TOP_BONUS) unless items.empty?
51
+ end
52
+
53
+ # 合算して、重複は削除、スコア順にソート
54
+ results = container.reduce([]) {|r,i| r += i}.uniq{|i| i.item.uuid}.sort.reverse
55
+
56
+ # スコアの高い物をピックアップ、Itemに戻して返す
57
+ results[0..num-1].map {|scored_item| scored_item.item}
58
+ end
59
+
60
+ private
61
+
62
+ class ScoredItem
63
+ attr_reader :item
64
+ attr_reader :score
65
+
66
+ def initialize(item)
67
+ @item = item
68
+ @score = item.stock_count * 10 + item.comment_count * 20
69
+ end
70
+
71
+ def add_score(v)
72
+ @score += v
73
+ end
74
+
75
+ def <=>(rhs)
76
+ self.score <=> rhs.score
77
+ end
78
+ end
79
+
80
+ def print_container(container)
81
+ container.each_with_index do |items, index|
82
+ puts "-- #{@settings.keywords[index]} --"
83
+ print_items(items)
84
+ end
85
+ end
86
+
87
+ def print_items(items)
88
+ items.each do |item|
89
+ if item.class == ScoredItem
90
+ puts format("%3d: %s", item.score, item.item.title)
91
+ else
92
+ p [item.uuid, item.title]
93
+ end
94
+ end
95
+ end
96
+
97
+ def pickup_in
98
+ unless USE_CACHE
99
+ items = pickup_items
100
+ # MarshalFile.save(CACHE_FILE, items) # @debug キャッシュを保存
101
+ items
102
+ else
103
+ items = MarshalFile.load(CACHE_FILE)
104
+ end
105
+ end
106
+
107
+ def pickup_items
108
+ items = []
109
+
110
+ # 最新記事から取得
111
+ items << Qiita.items({:per_page => PER_PAGE})
112
+
113
+ # 登録したキーワードから取得
114
+ @settings.keywords.each do |tag|
115
+ # items << Qiita.tag_items(tag)
116
+ items << Qiita.search_items(tag, {:per_page => PER_PAGE})
117
+ end
118
+
119
+ items
120
+ end
121
+
122
+ end
123
+ end
124
+
@@ -0,0 +1,52 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief
5
+ # @author ongaeshi
6
+ # @date 2012/10/22
7
+
8
+ require 'yaml'
9
+
10
+ module QiitaMail
11
+ class Settings
12
+ def self.default_filename
13
+ File.expand_path('~/.qiita_mail.yaml')
14
+ end
15
+
16
+ def initialize(filename = Settings.default_filename)
17
+ @filename = filename
18
+
19
+ if File.exist?(@filename)
20
+ open(@filename) do |f|
21
+ @data = YAML.load(f.read)
22
+ end
23
+ else
24
+ @data = {
25
+ 'email' => '',
26
+ 'keywords' => []
27
+ }
28
+ @is_empty = true
29
+ end
30
+ end
31
+
32
+ def save
33
+ open(@filename, "w") do |f|
34
+ f.write YAML.dump(@data)
35
+ end
36
+ end
37
+
38
+ def email
39
+ @data['email']
40
+ end
41
+
42
+ def keywords
43
+ @data['keywords']
44
+ end
45
+
46
+ def empty?
47
+ !@is_empty.nil?
48
+ end
49
+ end
50
+ end
51
+
52
+
@@ -0,0 +1,44 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief
5
+ # @author ongaeshi
6
+ # @date 2012/10/21
7
+
8
+ require 'qiita_mail/marshal_file'
9
+
10
+ module QiitaMail
11
+ class Storage
12
+ def self.default_filename
13
+ File.expand_path('~/.qiita_mail.marshal')
14
+ end
15
+
16
+ def initialize(filename = Storage.default_filename)
17
+ @filename = filename
18
+
19
+ if File.exist?(@filename)
20
+ @data = MarshalFile.load(@filename)
21
+ else
22
+ @data = {}
23
+ end
24
+ end
25
+
26
+ def add_reading(uuid)
27
+ @data[:reading] ||= {}
28
+ @data[:reading][uuid] = true
29
+ end
30
+
31
+ def reading?(uuid)
32
+ if @data.has_key? :reading
33
+ @data[:reading].has_key? uuid
34
+ else
35
+ false
36
+ end
37
+ end
38
+
39
+ def save
40
+ MarshalFile.save(@filename, @data)
41
+ end
42
+ end
43
+ end
44
+
@@ -1,3 +1,3 @@
1
1
  module QiitaMail
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
data/qiita_mail.gemspec CHANGED
@@ -19,4 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.require_paths = ["lib"]
20
20
 
21
21
  s.add_dependency 'thor'
22
+ s.add_dependency 'qiita'
23
+ s.add_dependency 'mail'
24
+ s.add_dependency 'nokogiri'
22
25
  end
Binary file
@@ -0,0 +1,8 @@
1
+ ---
2
+ email: 'qiita_mail@example.com'
3
+
4
+ keywords:
5
+ - ruby
6
+ - javascript
7
+
8
+
@@ -0,0 +1,52 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief ファイルテスト用ユーティリティ
5
+ # @author ongaeshi
6
+ # @date 2011/02/21
7
+ #
8
+ # 使い方:
9
+ #
10
+ # class TestCdstk < Test::Unit::TestCase
11
+ # include FileTestUtils
12
+ # end
13
+ #
14
+ # すると以下のことを自動でやってくれます
15
+ #
16
+ # 1. tmpディレクトリの作成
17
+ # 2. tmpディレクトリに移動
18
+ # 3. テスト実行
19
+ # 4. 元のディレクトリに戻る
20
+ # 5. tmpディレクトリの削除
21
+ #
22
+
23
+ require 'fileutils'
24
+
25
+ module FileTestUtils
26
+ def setup
27
+ create_tmp_dir
28
+ FileUtils.cd(@tmp_dir)
29
+ end
30
+
31
+ def teardown
32
+ teardown_custom(true)
33
+ end
34
+
35
+ def teardown_custom(is_remove_dir)
36
+ FileUtils.cd(@prev_dir)
37
+ FileUtils.rm_rf(@tmp_dir) if (is_remove_dir)
38
+ end
39
+
40
+ def tmp_path(path)
41
+ File.join @tmp_dir, path
42
+ end
43
+
44
+ private
45
+
46
+ def create_tmp_dir
47
+ @prev_dir = Dir.pwd
48
+ @tmp_dir = File.join(File.dirname(__FILE__), "tmp")
49
+ FileUtils.rm_rf(@tmp_dir)
50
+ FileUtils.mkdir_p(@tmp_dir)
51
+ end
52
+ end
data/test/test_cli.rb ADDED
@@ -0,0 +1,33 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief
5
+ # @author ongaeshi
6
+ # @date 2012/10/15
7
+
8
+ require 'qiita_mail/cli.rb'
9
+ require 'test_helper'
10
+
11
+ module QiitaMail
12
+ class TestCLI < Test::Unit::TestCase
13
+ def setup
14
+ $stdout = StringIO.new
15
+ @orig_stdout = $stdout
16
+ end
17
+
18
+ def teardown
19
+ $stdout = @orig_stdout
20
+ end
21
+
22
+ def test_no_arg
23
+ assert_match /Tasks:/, command("")
24
+ end
25
+
26
+ private
27
+
28
+ def command(arg)
29
+ CLI.start(arg.split)
30
+ $stdout.string
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,3 @@
1
+ require 'stringio'
2
+ require 'test/unit'
3
+ require 'file_test_utils'
@@ -0,0 +1,38 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief
5
+ # @author ongaeshi
6
+ # @date 2012/10/21
7
+
8
+ require 'qiita_mail/settings'
9
+ require 'test_helper'
10
+
11
+ module QiitaMail
12
+ class TestSettings < Test::Unit::TestCase
13
+ include FileTestUtils
14
+
15
+ def test_default_filename
16
+ assert_match /\.qiita_mail.yaml/, Settings.default_filename
17
+ end
18
+
19
+ def test_empty
20
+ obj = Settings.new('.qiita_mail.yaml') # データが無い場合は新規作成
21
+ assert_equal "", obj.email
22
+ assert_equal [], obj.keywords
23
+ assert_equal true, obj.empty?
24
+ obj.save
25
+ end
26
+
27
+ def test_exist_yaml
28
+ obj = Settings.new(tmp_path('../data/qiita_mail.yaml'))
29
+ assert_equal "qiita_mail@example.com", obj.email
30
+ assert_equal ['ruby', 'javascript'], obj.keywords
31
+ assert_equal false, obj.empty?
32
+ end
33
+
34
+ def teardown
35
+ teardown_custom(true)
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,40 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief
5
+ # @author ongaeshi
6
+ # @date 2012/10/21
7
+
8
+ require 'qiita_mail/storage.rb'
9
+ require 'test_helper'
10
+
11
+ module QiitaMail
12
+ class TestStorage < Test::Unit::TestCase
13
+ include FileTestUtils
14
+
15
+ def test_default_filename
16
+ assert_match /\.qiita_mail.marshal/, Storage.default_filename
17
+ end
18
+
19
+ def test_initialize
20
+ # データが無い場合は新規作成
21
+ obj = Storage.new('.qiita_mail')
22
+ assert_equal false, obj.reading?('7f15')
23
+ obj.add_reading('7f15')
24
+ assert_equal true, obj.reading?('7f15')
25
+ obj.save
26
+
27
+ # ロード
28
+ obj = Storage.new('.qiita_mail')
29
+ assert_equal true, obj.reading?('7f15')
30
+ assert_equal false, obj.reading?('7f16')
31
+ obj.add_reading('7f16')
32
+ assert_equal true, obj.reading?('7f16')
33
+ obj.save
34
+ end
35
+
36
+ def teardown
37
+ teardown_custom(true)
38
+ end
39
+ end
40
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qiita_mail
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.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: 2012-10-12 00:00:00.000000000 Z
12
+ date: 2012-10-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
16
- requirement: !ruby/object:Gem::Requirement
16
+ requirement: &2153154780 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,12 +21,40 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
24
+ version_requirements: *2153154780
25
+ - !ruby/object:Gem::Dependency
26
+ name: qiita
27
+ requirement: &2153154260 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *2153154260
36
+ - !ruby/object:Gem::Dependency
37
+ name: mail
38
+ requirement: &2153153620 !ruby/object:Gem::Requirement
25
39
  none: false
26
40
  requirements:
27
41
  - - ! '>='
28
42
  - !ruby/object:Gem::Version
29
43
  version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *2153153620
47
+ - !ruby/object:Gem::Dependency
48
+ name: nokogiri
49
+ requirement: &2153152780 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *2153152780
30
58
  description: Write a gem description
31
59
  email:
32
60
  - ongaeshi0621@gmail.com
@@ -41,8 +69,24 @@ files:
41
69
  - bin/qiita_mail
42
70
  - lib/qiita_mail.rb
43
71
  - lib/qiita_mail/cli.rb
72
+ - lib/qiita_mail/cli_core.rb
73
+ - lib/qiita_mail/format_html.rb
74
+ - lib/qiita_mail/format_text.rb
75
+ - lib/qiita_mail/mailer.rb
76
+ - lib/qiita_mail/marshal_file.rb
77
+ - lib/qiita_mail/qiita_custom.rb
78
+ - lib/qiita_mail/selector.rb
79
+ - lib/qiita_mail/settings.rb
80
+ - lib/qiita_mail/storage.rb
44
81
  - lib/qiita_mail/version.rb
45
82
  - qiita_mail.gemspec
83
+ - test/data/pickup_cache.marshal
84
+ - test/data/qiita_mail.yaml
85
+ - test/file_test_utils.rb
86
+ - test/test_cli.rb
87
+ - test/test_helper.rb
88
+ - test/test_settings.rb
89
+ - test/test_storage.rb
46
90
  homepage: ''
47
91
  licenses: []
48
92
  post_install_message:
@@ -63,9 +107,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
63
107
  version: '0'
64
108
  requirements: []
65
109
  rubyforge_project: qiita_mail
66
- rubygems_version: 1.8.23
110
+ rubygems_version: 1.8.11
67
111
  signing_key:
68
112
  specification_version: 3
69
113
  summary: Write a gem summary
70
- test_files: []
114
+ test_files:
115
+ - test/data/pickup_cache.marshal
116
+ - test/data/qiita_mail.yaml
117
+ - test/file_test_utils.rb
118
+ - test/test_cli.rb
119
+ - test/test_helper.rb
120
+ - test/test_settings.rb
121
+ - test/test_storage.rb
71
122
  has_rdoc: