rbitter 0.1.0 → 0.1.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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +21 -21
  3. data/.rspec +2 -2
  4. data/.travis.yml +15 -15
  5. data/Gemfile +12 -12
  6. data/LICENSE.txt +22 -22
  7. data/Rakefile +8 -8
  8. data/XMLRPC.md +19 -19
  9. data/bin/rbitter +20 -20
  10. data/lib/rbitter/arcserver.rb +130 -126
  11. data/lib/rbitter/console.rb +93 -93
  12. data/lib/rbitter/default/config_json.rb +37 -38
  13. data/lib/rbitter/dlthread.rb +62 -65
  14. data/lib/rbitter/env.rb +62 -62
  15. data/lib/rbitter/libtwitter_connection_override.rb +45 -45
  16. data/lib/rbitter/records.rb +121 -121
  17. data/lib/rbitter/records_migrate/20150327_add_index.rb +11 -11
  18. data/lib/rbitter/records_migrate/20150504_add_replyto_column.rb +11 -11
  19. data/lib/rbitter/streaming.rb +104 -104
  20. data/lib/rbitter/version.rb +20 -20
  21. data/lib/rbitter/xmlrpc.rb +3 -3
  22. data/lib/rbitter/xmlrpcd/base.rb +24 -24
  23. data/lib/rbitter/xmlrpcd/rpchandles.rb +11 -11
  24. data/lib/rbitter/xmlrpcd/xmlrpc_auth_server.rb +82 -82
  25. data/lib/rbitter/xmlrpcd/xmlrpcd.rb +69 -69
  26. data/lib/rbitter.rb +86 -86
  27. data/rbitter.gemspec +46 -42
  28. data/spec/config/default.json +32 -32
  29. data/spec/rbitter/arcserver_spec.rb +30 -30
  30. data/spec/rbitter/console_spec.rb +9 -9
  31. data/spec/rbitter/default/config_json_spec.rb +3 -3
  32. data/spec/rbitter/dlthread_spec.rb +8 -13
  33. data/spec/rbitter/env_spec.rb +62 -62
  34. data/spec/rbitter/libtwitter_connection_override_spec.rb +8 -8
  35. data/spec/rbitter/records_spec.rb +13 -13
  36. data/spec/rbitter/streaming_spec.rb +9 -9
  37. data/spec/rbitter/version_spec.rb +8 -8
  38. data/spec/rbitter/xmlrpc_spec.rb +8 -8
  39. data/spec/rbitter/xmlrpcd/base_spec.rb +29 -29
  40. data/spec/rbitter/xmlrpcd/rpchandles_spec.rb +10 -10
  41. data/spec/rbitter/xmlrpcd/xmlrpc_auth_server_spec.rb +8 -8
  42. data/spec/rbitter/xmlrpcd/xmlrpcd_spec.rb +9 -9
  43. data/spec/rbitter_spec.rb +42 -42
  44. data/spec/spec_helper.rb +39 -39
  45. metadata +29 -56
@@ -1,83 +1,83 @@
1
- # encoding: utf-8
2
-
3
- require "rbitter/xmlrpcd/rpchandles"
4
- require "rbitter/xmlrpcd/base"
5
- require "xmlrpc/server"
6
- require "webrick"
7
-
8
- module XMLRPC
9
- class HTTPAuthXMLRPCServer < XMLRPC::WEBrickServlet
10
- def extract_method(methodname, *args)
11
- for name, obj in @handler
12
- if obj.kind_of? Proc
13
- next unless methodname == name
14
- else
15
- next unless methodname =~ /^#{name}(.+)$/
16
- next unless obj.respond_to? $1
17
- return obj.method($1)
18
- end
19
- end
20
- nil
21
- end
22
-
23
- def service(request, response)
24
- # Taken from xmlrpc/server.rb
25
- if @valid_ip
26
- raise WEBrick::HTTPStatus::Forbidden unless @valid_ip.any? { |ip| request.peeraddr[3] =~ ip }
27
- end
28
-
29
- if request.request_method != "POST"
30
- raise WEBrick::HTTPStatus::MethodNotAllowed,
31
- "unsupported method `#{request.request_method}'."
32
- end
33
-
34
- if parse_content_type(request['Content-type']).first != "text/xml"
35
- raise WEBrick::HTTPStatus::BadRequest
36
- end
37
-
38
- length = (request['Content-length'] || 0).to_i
39
-
40
- raise WEBrick::HTTPStatus::LengthRequired unless length > 0
41
-
42
- data = request.body
43
-
44
- if data.nil? or data.bytesize != length
45
- raise WEBrick::HTTPStatus::BadRequest
46
- end
47
-
48
- # Originally, process(data) was here.
49
- # We need to check whether a method requires authorization.
50
- rpc_method_name, rpc_params = parser().parseMethodCall(data)
51
- rpc_method = extract_method(rpc_method_name)
52
-
53
- if RPCHandles.auth.nil?
54
- resp = handle(rpc_method_name, *rpc_params)
55
- else
56
- if rpc_method.owner.ancestors.include?(RPCHandles::BaseHandle::Auth)
57
- # Check cookie and check it's valid
58
- if request.cookies.size == 1 \
59
- and request.cookies[0].name == "auth_key" \
60
- and RPCHandles.auth.include?(request.cookies[0].value)
61
- resp = handle(rpc_method_name, *rpc_params)
62
- else
63
- # Permission required
64
- raise WEBrick::HTTPStatus::Forbidden
65
- end
66
- elsif rpc_method.owner.ancestors.include?(RPCHandles::BaseHandle::NoAuth)
67
- resp = handle(rpc_method_name, *rpc_params)
68
- else
69
- raise WEBrick::HTTPStatus::Forbidden
70
- end
71
- end
72
-
73
- if resp.nil? or resp.bytesize <= 0
74
- raise WEBrick::HTTPStatus::InternalServerError
75
- end
76
-
77
- response.status = 200
78
- response['Content-Length'] = resp.bytesize
79
- response['Content-Type'] = "text/xml; charset=utf-8"
80
- response.body = resp
81
- end
82
- end
1
+ # encoding: utf-8
2
+
3
+ require "rbitter/xmlrpcd/rpchandles"
4
+ require "rbitter/xmlrpcd/base"
5
+ require "xmlrpc/server"
6
+ require "webrick"
7
+
8
+ module XMLRPC
9
+ class HTTPAuthXMLRPCServer < XMLRPC::WEBrickServlet
10
+ def extract_method(methodname, *args)
11
+ for name, obj in @handler
12
+ if obj.kind_of? Proc
13
+ next unless methodname == name
14
+ else
15
+ next unless methodname =~ /^#{name}(.+)$/
16
+ next unless obj.respond_to? $1
17
+ return obj.method($1)
18
+ end
19
+ end
20
+ nil
21
+ end
22
+
23
+ def service(request, response)
24
+ # Taken from xmlrpc/server.rb
25
+ if @valid_ip
26
+ raise WEBrick::HTTPStatus::Forbidden unless @valid_ip.any? { |ip| request.peeraddr[3] =~ ip }
27
+ end
28
+
29
+ if request.request_method != "POST"
30
+ raise WEBrick::HTTPStatus::MethodNotAllowed,
31
+ "unsupported method `#{request.request_method}'."
32
+ end
33
+
34
+ if parse_content_type(request['Content-type']).first != "text/xml"
35
+ raise WEBrick::HTTPStatus::BadRequest
36
+ end
37
+
38
+ length = (request['Content-length'] || 0).to_i
39
+
40
+ raise WEBrick::HTTPStatus::LengthRequired unless length > 0
41
+
42
+ data = request.body
43
+
44
+ if data.nil? or data.bytesize != length
45
+ raise WEBrick::HTTPStatus::BadRequest
46
+ end
47
+
48
+ # Originally, process(data) was here.
49
+ # We need to check whether a method requires authorization.
50
+ rpc_method_name, rpc_params = parser().parseMethodCall(data)
51
+ rpc_method = extract_method(rpc_method_name)
52
+
53
+ if RPCHandles.auth.nil?
54
+ resp = handle(rpc_method_name, *rpc_params)
55
+ else
56
+ if rpc_method.owner.ancestors.include?(RPCHandles::BaseHandle::Auth)
57
+ # Check cookie and check it's valid
58
+ if request.cookies.size == 1 \
59
+ and request.cookies[0].name == "auth_key" \
60
+ and RPCHandles.auth.include?(request.cookies[0].value)
61
+ resp = handle(rpc_method_name, *rpc_params)
62
+ else
63
+ # Permission required
64
+ raise WEBrick::HTTPStatus::Forbidden
65
+ end
66
+ elsif rpc_method.owner.ancestors.include?(RPCHandles::BaseHandle::NoAuth)
67
+ resp = handle(rpc_method_name, *rpc_params)
68
+ else
69
+ raise WEBrick::HTTPStatus::Forbidden
70
+ end
71
+ end
72
+
73
+ if resp.nil? or resp.bytesize <= 0
74
+ raise WEBrick::HTTPStatus::InternalServerError
75
+ end
76
+
77
+ response.status = 200
78
+ response['Content-Length'] = resp.bytesize
79
+ response['Content-Type'] = "text/xml; charset=utf-8"
80
+ response.body = resp
81
+ end
82
+ end
83
83
  end
@@ -1,69 +1,69 @@
1
- # encoding: utf-8
2
-
3
- require "rbitter/xmlrpcd/rpchandles"
4
- require "rbitter/xmlrpcd/xmlrpc_auth_server"
5
- require "webrick"
6
-
7
- module Rbitter
8
- RPC_PREFIX="rbitter"
9
-
10
- class RPCServer
11
- def initialize bind_host, bind_port
12
- @server = WEBrick::HTTPServer.new(:Port => bind_port.to_i, :BindAddress => bind_host.to_s, :MaxClients => 4, :Logger => WEBrick::Log.new($stdout))
13
- @core = XMLRPC::HTTPAuthXMLRPCServer.new
14
- @core.set_default_handler { |name, *args|
15
- "NO_COMMAND: #{name} with args #{args.inspect}"
16
- }
17
- end
18
-
19
- def load_all_handles
20
- Rbitter["xmlrpc"]["handles"].each { |path|
21
- puts "[xmlrpc] Scanning handles from (#{path})"
22
- Dir.entries(path).each { |fname|
23
- fname = File.join(path, fname)
24
- if File.exist?(fname) and File.file?(fname)
25
- if fname.match(/rh_\w+\.rb$/)
26
- begin
27
- load fname
28
- rescue Exception => e
29
- # stub
30
- puts "Exception while loading #{fname}"
31
- puts e.inspect
32
- end
33
- else
34
- puts "Ignored: #{fname}"
35
- end
36
- end
37
- }
38
- }
39
-
40
- puts "[xmlrpc] found #{RPCHandles.constants.length} constants."
41
- RPCHandles.constants.each { |handler|
42
- if RPCHandles.const_get(handler).is_a?(Class)
43
- @core.add_handler(RPC_PREFIX, RPCHandles.const_get(handler).new)
44
- end
45
- }
46
- end
47
-
48
- def main_loop
49
- load_all_handles
50
-
51
- @server.mount("/", @core)
52
- @server.start
53
-
54
- puts "[xmlrpc] XMLRPC started"
55
- end
56
- end
57
-
58
- class DummyRPCServer
59
- def initialize bind_host, bind_port; end
60
-
61
- def load_all_handles; end
62
-
63
- def main_loop
64
- puts "[xmlrpc] DummyRPCServer started"
65
- end
66
- end
67
-
68
- class NullRPCServer; end
69
- end
1
+ # encoding: utf-8
2
+
3
+ require "rbitter/xmlrpcd/rpchandles"
4
+ require "rbitter/xmlrpcd/xmlrpc_auth_server"
5
+ require "webrick"
6
+
7
+ module Rbitter
8
+ RPC_PREFIX="rbitter"
9
+
10
+ class RPCServer
11
+ def initialize bind_host, bind_port
12
+ @server = WEBrick::HTTPServer.new(:Port => bind_port.to_i, :BindAddress => bind_host.to_s, :MaxClients => 4, :Logger => WEBrick::Log.new($stdout))
13
+ @core = XMLRPC::HTTPAuthXMLRPCServer.new
14
+ @core.set_default_handler { |name, *args|
15
+ "NO_COMMAND: #{name} with args #{args.inspect}"
16
+ }
17
+ end
18
+
19
+ def load_all_handles
20
+ Rbitter["xmlrpc"]["handles"].each { |path|
21
+ puts "[xmlrpc] Scanning handles from (#{path})"
22
+ Dir.entries(path).each { |fname|
23
+ fname = File.join(path, fname)
24
+ if File.exist?(fname) and File.file?(fname)
25
+ if fname.match(/rh_\w+\.rb$/)
26
+ begin
27
+ load fname
28
+ rescue Exception => e
29
+ # stub
30
+ puts "Exception while loading #{fname}"
31
+ puts e.inspect
32
+ end
33
+ else
34
+ puts "Ignored: #{fname}"
35
+ end
36
+ end
37
+ }
38
+ }
39
+
40
+ puts "[xmlrpc] found #{RPCHandles.constants.length} constants."
41
+ RPCHandles.constants.each { |handler|
42
+ if RPCHandles.const_get(handler).is_a?(Class)
43
+ @core.add_handler(RPC_PREFIX, RPCHandles.const_get(handler).new)
44
+ end
45
+ }
46
+ end
47
+
48
+ def main_loop
49
+ load_all_handles
50
+
51
+ @server.mount("/", @core)
52
+ @server.start
53
+
54
+ puts "[xmlrpc] XMLRPC started"
55
+ end
56
+ end
57
+
58
+ class DummyRPCServer
59
+ def initialize bind_host, bind_port; end
60
+
61
+ def load_all_handles; end
62
+
63
+ def main_loop
64
+ puts "[xmlrpc] DummyRPCServer started"
65
+ end
66
+ end
67
+
68
+ class NullRPCServer; end
69
+ end
data/lib/rbitter.rb CHANGED
@@ -1,86 +1,86 @@
1
- # encoding: utf-8
2
- #
3
-
4
- require "rbitter/version"
5
- require "rbitter/arcserver"
6
- require "rbitter/env"
7
- require "rbitter/console"
8
- require "rbitter/xmlrpc"
9
-
10
- module Rbitter
11
- BOOTSTRAP_ARGS = ['configure', 'console', 'help', 'logs', 'serve']
12
-
13
- def self.rbitter_header
14
- puts "Rbitter #{VERSION} on #{RUBY_VERSION} (#{RUBY_PLATFORM})"
15
- end
16
-
17
- def self.rbitter_help_msg
18
- puts "Rbitter is a Twitter streaming archiver, with XMLRPC access."
19
- puts "-------"
20
- puts "Usage: rbitter (application-mode)"
21
- puts "application-mode's are:"
22
- puts "|- serve : Launch Rbitter full system (Streaming + Database + XMLRPC)"
23
- puts "|- console : Launch console application utilizing XMLRPC"
24
- puts "|- configure: Write default configuration file 'config.json' in current folder"
25
- puts "|- help : Show this message"
26
- puts "`- logs : Show Rbitter internal logs"
27
- end
28
-
29
- def self.prebootstrap
30
- # Due to stalled socket problem, If unpatched twitter gem is installed.
31
- # Twitter::Streaming::Connection will be monkey-patched.
32
- patch_required = false
33
-
34
- if Twitter::Version.const_defined?(:MAJOR)
35
- b5_version = Twitter::Version::MAJOR * 10000
36
- + Twitter::Version::MINOR * 100 + Twitter::Version::PATCH
37
- if b5_version <= 51400
38
- warn "[rbitter] Monkey-patching Twitter::Streaming::Connection"
39
- warn "[rbitter] Please upgrade twitter gem to apply streaming read timeout"
40
- patch_required = true
41
- end
42
- else
43
- b6_version = Twitter::Version.to_a
44
- if b6_version[0] <= 6 and b6_version[1] <= 0 and b6_version[2] <= 0
45
- patch_required = true
46
- end
47
- end
48
-
49
- require "rbitter/libtwitter_connection_override" if patch_required
50
- end
51
-
52
- def self.bootstrap_configs
53
- require "rbitter/default/config_json"
54
-
55
- open(File.join(Dir.pwd, "config.json"), "w") { |io|
56
- io.write(DEFAULT_CONFIG_JSON)
57
- }
58
- end
59
-
60
- def self.bootstrap args=[]
61
- return nil if args.length < 1
62
-
63
- if args[0] == "serve"
64
- prebootstrap
65
-
66
- Rbitter.config_initialize
67
-
68
- archive_server = Rbitter::ArcServer.new
69
- archive_server.main_loop
70
- elsif args[0] == "help"
71
- rbitter_help_msg
72
- elsif args[0] == "configure"
73
- bootstrap_configs
74
- elsif args[0] == "console"
75
- Rbitter.config_initialize
76
-
77
- con = Rbitter::Console.new
78
- con.start
79
- elsif args[0] == "logs"
80
- # show log in stdout
81
- puts "Log buffer feature is in heavy development. Sorry."
82
- else
83
- fail StandardError, "Invalid bootstrap parameter: #{args[0]}"
84
- end
85
- end
86
- end
1
+ # encoding: utf-8
2
+ #
3
+
4
+ require "rbitter/version"
5
+ require "rbitter/arcserver"
6
+ require "rbitter/env"
7
+ require "rbitter/console"
8
+ require "rbitter/xmlrpc"
9
+
10
+ module Rbitter
11
+ BOOTSTRAP_ARGS = ['configure', 'console', 'help', 'logs', 'serve']
12
+
13
+ def self.rbitter_header
14
+ puts "Rbitter #{VERSION} on #{RUBY_VERSION} (#{RUBY_PLATFORM})"
15
+ end
16
+
17
+ def self.rbitter_help_msg
18
+ puts "Rbitter is a Twitter streaming archiver, with XMLRPC access."
19
+ puts "-------"
20
+ puts "Usage: rbitter (application-mode)"
21
+ puts "application-mode's are:"
22
+ puts "|- serve : Launch Rbitter full system (Streaming + Database + XMLRPC)"
23
+ puts "|- console : Launch console application utilizing XMLRPC"
24
+ puts "|- configure: Write default configuration file 'config.json' in current folder"
25
+ puts "|- help : Show this message"
26
+ puts "`- logs : Show Rbitter internal logs"
27
+ end
28
+
29
+ def self.prebootstrap
30
+ # Due to stalled socket problem, If unpatched twitter gem is installed.
31
+ # Twitter::Streaming::Connection will be monkey-patched.
32
+ patch_required = false
33
+
34
+ if Twitter::Version.const_defined?(:MAJOR)
35
+ b5_version = Twitter::Version::MAJOR * 10000
36
+ + Twitter::Version::MINOR * 100 + Twitter::Version::PATCH
37
+ if b5_version <= 51400
38
+ warn "[rbitter] Monkey-patching Twitter::Streaming::Connection"
39
+ warn "[rbitter] Please upgrade twitter gem to apply streaming read timeout"
40
+ patch_required = true
41
+ end
42
+ else
43
+ b6_version = Twitter::Version.to_a
44
+ if b6_version[0] <= 6 and b6_version[1] <= 0 and b6_version[2] <= 0
45
+ patch_required = true
46
+ end
47
+ end
48
+
49
+ require "rbitter/libtwitter_connection_override" if patch_required
50
+ end
51
+
52
+ def self.bootstrap_configs
53
+ require "rbitter/default/config_json"
54
+
55
+ open(File.join(Dir.pwd, "config.json"), "w") { |io|
56
+ io.write(DEFAULT_CONFIG_JSON)
57
+ }
58
+ end
59
+
60
+ def self.bootstrap args=[]
61
+ return nil if args.length < 1
62
+
63
+ if args[0] == "serve"
64
+ prebootstrap
65
+
66
+ Rbitter.config_initialize
67
+
68
+ archive_server = Rbitter::ArcServer.new
69
+ archive_server.main_loop
70
+ elsif args[0] == "help"
71
+ rbitter_help_msg
72
+ elsif args[0] == "configure"
73
+ bootstrap_configs
74
+ elsif args[0] == "console"
75
+ Rbitter.config_initialize
76
+
77
+ con = Rbitter::Console.new
78
+ con.start
79
+ elsif args[0] == "logs"
80
+ # show log in stdout
81
+ puts "Log buffer feature is in heavy development. Sorry."
82
+ else
83
+ fail StandardError, "Invalid bootstrap parameter: #{args[0]}"
84
+ end
85
+ end
86
+ end
data/rbitter.gemspec CHANGED
@@ -1,42 +1,46 @@
1
- # coding: utf-8
2
-
3
- lib = File.expand_path('../lib', __FILE__)
4
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require 'rbitter/version'
6
-
7
- Gem::Specification.new do |spec|
8
- spec.name = "rbitter"
9
- spec.version = Rbitter::VERSION
10
- spec.authors = ["Nidev Plontra"]
11
- spec.email = ["nidev.plontra@gmail.com"]
12
- spec.summary = %q{Rbitter is a Twitter client specialized in archiving}
13
- spec.description = %q{Rbitter archives all tweets appeared on user streaming using ActiveRecord. XMLRPC is used to serve archived tweets and useful features}
14
- spec.homepage = "https://github.com/nidev/rbitter"
15
- spec.license = "MIT"
16
-
17
- spec.files = `git ls-files -z`.split("\x0")
18
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
- spec.require_paths = ["lib"]
21
-
22
-
23
- spec.add_dependency 'twitter', '~> 5.14'
24
- spec.add_dependency 'json', '~> 1.7'
25
- spec.add_dependency 'ripl', '~> 0.7'
26
- spec.add_dependency 'activerecord', '~> 4.0'
27
-
28
- if RUBY_PLATFORM == 'java'
29
- spec.add_dependency 'activerecord-jdbc-adapter', '~> 1.3'
30
- spec.add_dependency 'jdbc-sqlite3', '~> 3.8'
31
- spec.add_dependency 'jdbc-mysql', '~> 5.1'
32
- spec.add_dependency 'activerecord-jdbcsqlite3-adapter', '~> 1.3'
33
- spec.add_dependency 'activerecord-jdbcmysql-adapter', '~> 1.3'
34
- else
35
- spec.add_dependency 'sqlite3', '~> 1.3'
36
- spec.add_dependency 'mysql2', '~> 0.3'
37
- spec.add_dependency 'activerecord-mysql2-adapter', '~> 0.0.3'
38
- end
39
-
40
- spec.add_development_dependency "bundler", "~> 1.6"
41
- spec.add_development_dependency "rake", "~> 10.0"
42
- end
1
+ # coding: utf-8
2
+
3
+ lib = File.expand_path('../lib', __FILE__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'rbitter/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = "rbitter"
9
+ spec.version = Rbitter::VERSION
10
+ spec.authors = ["Nidev Plontra"]
11
+ spec.email = ["nidev.plontra@gmail.com"]
12
+ spec.summary = %q{Rbitter is a Twitter client specialized in archiving}
13
+ spec.description = %q{Rbitter archives all tweets appeared on user streaming using ActiveRecord. XMLRPC is used to serve archived tweets and useful features}
14
+ spec.homepage = "https://github.com/nidev/rbitter"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0")
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
+ spec.require_paths = ["lib"]
21
+
22
+
23
+ spec.add_dependency 'twitter', '~> 5.14'
24
+ spec.add_dependency 'json', '~> 1.7'
25
+ spec.add_dependency 'ripl', '~> 0.7'
26
+ spec.add_dependency 'activerecord', '~> 4.0'
27
+
28
+ if RUBY_PLATFORM == 'java'
29
+ spec.platform = 'java'
30
+
31
+ spec.add_dependency 'activerecord-jdbc-adapter', '~> 1.3'
32
+ spec.add_dependency 'jdbc-sqlite3', '~> 3.8'
33
+ spec.add_dependency 'jdbc-mysql', '~> 5.1'
34
+ spec.add_dependency 'activerecord-jdbcsqlite3-adapter', '~> 1.3'
35
+ spec.add_dependency 'activerecord-jdbcmysql-adapter', '~> 1.3'
36
+ else
37
+ spec.platform = 'ruby'
38
+
39
+ spec.add_dependency 'sqlite3', '~> 1.3'
40
+ spec.add_dependency 'mysql2', '~> 0.3'
41
+ spec.add_dependency 'activerecord-mysql2-adapter', '~> 0.0.3'
42
+ end
43
+
44
+ spec.add_development_dependency "bundler", "~> 1.6"
45
+ spec.add_development_dependency "rake", "~> 10.0"
46
+ end
@@ -1,33 +1,33 @@
1
- {
2
- "twitter": {
3
- "consumer_key": "",
4
- "consumer_secret": "",
5
- "access_token": "",
6
- "access_token_secret": ""
7
- },
8
- "activerecord": "sqlite3",
9
- "sqlite3": {
10
- "dbfile": "rbitter.sqlite"
11
- },
12
- "mysql2": {
13
- "host": "localhost",
14
- "port": 3306,
15
- "dbname": "archive",
16
- "username": "",
17
- "password": ""
18
- },
19
- "media_downloader": {
20
- "cacert_path": "/cacerts/cacert.pem",
21
- "download_dir": "imgs/"
22
- },
23
- "xmlrpc": {
24
- "enable": true,
25
- "bind_host": "0.0.0.0",
26
- "bind_port": 1400,
27
- "auth": {
28
- "username": "username",
29
- "password": "password"
30
- },
31
- "handles": ["/path/to/handles"]
32
- }
1
+ {
2
+ "twitter": {
3
+ "consumer_key": "",
4
+ "consumer_secret": "",
5
+ "access_token": "",
6
+ "access_token_secret": ""
7
+ },
8
+ "activerecord": "sqlite3",
9
+ "sqlite3": {
10
+ "dbfile": "rbitter.sqlite"
11
+ },
12
+ "mysql2": {
13
+ "host": "localhost",
14
+ "port": 3306,
15
+ "dbname": "archive",
16
+ "username": "",
17
+ "password": ""
18
+ },
19
+ "media_downloader": {
20
+ "cacert_path": "/cacerts/cacert.pem",
21
+ "download_dir": "imgs/"
22
+ },
23
+ "xmlrpc": {
24
+ "enable": true,
25
+ "bind_host": "0.0.0.0",
26
+ "bind_port": 1400,
27
+ "auth": {
28
+ "username": "username",
29
+ "password": "password"
30
+ },
31
+ "handles": ["/path/to/handles"]
32
+ }
33
33
  }