crabfarm 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/bin/crabfarm +9 -0
  3. data/lib/crabfarm.rb +24 -0
  4. data/lib/crabfarm/adapters.rb +23 -0
  5. data/lib/crabfarm/adapters/capybara_adapter.rb +7 -0
  6. data/lib/crabfarm/adapters/surfer_adapter.rb +7 -0
  7. data/lib/crabfarm/adapters/watir_adapter.rb +7 -0
  8. data/lib/crabfarm/base_parser.rb +26 -0
  9. data/lib/crabfarm/base_state.rb +41 -0
  10. data/lib/crabfarm/cli.rb +79 -0
  11. data/lib/crabfarm/configuration.rb +83 -0
  12. data/lib/crabfarm/context.rb +32 -0
  13. data/lib/crabfarm/default_driver_factory.rb +37 -0
  14. data/lib/crabfarm/driver_bucket.rb +50 -0
  15. data/lib/crabfarm/driver_bucket_pool.rb +48 -0
  16. data/lib/crabfarm/dsl/surfer.rb +22 -0
  17. data/lib/crabfarm/dsl/surfer/search_context.rb +134 -0
  18. data/lib/crabfarm/dsl/surfer/surf_context.rb +58 -0
  19. data/lib/crabfarm/engines/safe_state_loop.rb +96 -0
  20. data/lib/crabfarm/errors.rb +50 -0
  21. data/lib/crabfarm/loader.rb +83 -0
  22. data/lib/crabfarm/modes/console.rb +86 -0
  23. data/lib/crabfarm/modes/generator.rb +120 -0
  24. data/lib/crabfarm/modes/server.rb +78 -0
  25. data/lib/crabfarm/module_helper.rb +35 -0
  26. data/lib/crabfarm/phantom_driver_factory.rb +33 -0
  27. data/lib/crabfarm/phantom_runner.rb +74 -0
  28. data/lib/crabfarm/rspec.rb +39 -0
  29. data/lib/crabfarm/state_store.rb +24 -0
  30. data/lib/crabfarm/support/custom_puma.rb +64 -0
  31. data/lib/crabfarm/templates/Crabfile.erb +3 -0
  32. data/lib/crabfarm/templates/Gemfile.erb +7 -0
  33. data/lib/crabfarm/templates/boot.rb.erb +13 -0
  34. data/lib/crabfarm/templates/crabfarm_bin.erb +3 -0
  35. data/lib/crabfarm/templates/dot_gitignore.erb +1 -0
  36. data/lib/crabfarm/templates/dot_gitkeep.erb +0 -0
  37. data/lib/crabfarm/templates/dot_rspec.erb +4 -0
  38. data/lib/crabfarm/templates/parser.rb.erb +8 -0
  39. data/lib/crabfarm/templates/parser_spec.rb.erb +7 -0
  40. data/lib/crabfarm/templates/spec_helper.rb.erb +22 -0
  41. data/lib/crabfarm/templates/state.rb.erb +8 -0
  42. data/lib/crabfarm/templates/state_spec.rb.erb +7 -0
  43. data/lib/crabfarm/version.rb +3 -0
  44. metadata +359 -0
@@ -0,0 +1,24 @@
1
+ require 'active_support'
2
+
3
+ module Crabfarm
4
+ class StateStore
5
+
6
+ def initialize(_module)
7
+ reset
8
+ end
9
+
10
+ def fetch(key, &block)
11
+ @data.fetch(key.to_sym, &block)
12
+ end
13
+
14
+ def set(key, value)
15
+ @data[key.to_sym] = value
16
+ end
17
+
18
+ def reset
19
+ @data = Hash.new
20
+ end
21
+
22
+ end
23
+
24
+ end
@@ -0,0 +1,64 @@
1
+ require 'rack/handler'
2
+ require 'puma'
3
+
4
+ module Crabfarm
5
+ module Support
6
+ module CustomPuma
7
+
8
+ DEFAULT_OPTIONS = {
9
+ :Host => '0.0.0.0',
10
+ :Port => 3100,
11
+ :Threads => '0:16',
12
+ :Verbose => false
13
+ }
14
+
15
+ def self.run(_app, _options = {})
16
+
17
+ _options = DEFAULT_OPTIONS.merge(_options)
18
+
19
+ _app = Rack::CommonLogger.new(_app, STDOUT) if _options[:Verbose]
20
+
21
+ ENV['RACK_ENV'] = _options[:environment].to_s if _options[:environment]
22
+
23
+ server = Puma::Server.new(_app)
24
+ min, max = _options[:Threads].split(':', 2)
25
+
26
+ puts "Puma #{::Puma::Const::PUMA_VERSION} starting..."
27
+ puts "* Min threads: #{min}, max threads: #{max}"
28
+ puts "* Environment: #{ENV['RACK_ENV']}"
29
+
30
+ if _options[:Host].start_with? 'unix://'
31
+ puts "* Listening on #{_options[:Host]}"
32
+ server.add_unix_listener _options[:Host][7..-1]
33
+ else
34
+ puts "* Listening on tcp://#{_options[:Host]}:#{_options[:Port]}"
35
+ server.add_tcp_listener _options[:Host], _options[:Port]
36
+ end
37
+
38
+ server.min_threads = min
39
+ server.max_threads = max
40
+
41
+ begin
42
+ server.run.join
43
+ rescue Interrupt
44
+ puts "* Gracefully stopping, waiting for requests to finish"
45
+ server.stop(true)
46
+ puts "* Goodbye!"
47
+ end
48
+
49
+ end
50
+
51
+ def self.valid_options
52
+ {
53
+ "Host=HOST" => "Hostname to listen on (default: localhost), also supports unix sockets if prefixed with unix://",
54
+ "Port=PORT" => "Port to listen on (default: 8080)",
55
+ "Threads=MIN:MAX" => "min:max threads to use (default 0:16)",
56
+ "Quiet" => "Don't report each request"
57
+ }
58
+ end
59
+ end
60
+
61
+ Rack::Handler.register :crabfarm_puma, CustomPuma
62
+ end
63
+ end
64
+
@@ -0,0 +1,3 @@
1
+ self.default_dsl = :surfer
2
+ self.driver_name = :firefox
3
+ # self.phantom_enabled = true
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem "crabfarm", '<%= version %>'
4
+
5
+ group :test do
6
+ gem "rspec-nc"
7
+ end
@@ -0,0 +1,13 @@
1
+ # Load gems listed in the Gemfile.
2
+
3
+ require 'bundler'
4
+
5
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __FILE__)
6
+ require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
7
+
8
+ Bundler.require
9
+
10
+ # Run code loader
11
+
12
+ CF_PATH = File.expand_path('../', __FILE__)
13
+ CF_LOADER = Crabfarm::Loader.new CF_PATH, ENV['CF_NAMESPACE']
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative '../boot'
3
+ require 'crabfarm/cli'
@@ -0,0 +1 @@
1
+ Gemfile.lock
File without changes
@@ -0,0 +1,4 @@
1
+ --color
2
+ --require spec_helper
3
+ --format=doc
4
+ --format=Nc
@@ -0,0 +1,8 @@
1
+ class <%= parser_class %> < Crabfarm::BaseParser
2
+
3
+ def parse
4
+ # Do some damage!
5
+ end
6
+
7
+ end
8
+
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe <%= parser_class %> do
4
+
5
+ pending "should extract values from snapshot"
6
+
7
+ end
@@ -0,0 +1,22 @@
1
+ require File.expand_path("../../boot", __FILE__)
2
+ Bundler.require :test
3
+
4
+ ENV['SNAPSHOT_DIR'] ||= File.expand_path("../snapshots", __FILE__)
5
+
6
+ require "crabfarm/rspec"
7
+
8
+ RSpec.configure do |config|
9
+ # ## Mock Framework
10
+ #
11
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
12
+ #
13
+ # config.mock_with :mocha
14
+ # config.mock_with :flexmock
15
+ # config.mock_with :rr
16
+
17
+ # Run specs in random order to surface order dependencies. If you find an
18
+ # order dependency and want to debug it, you can fix the order by providing
19
+ # the seed, which is printed after each run.
20
+ # --seed 1234
21
+ config.order = "random"
22
+ end
@@ -0,0 +1,8 @@
1
+ class <%= state_class %> < Crabfarm::BaseState
2
+
3
+ def crawl
4
+ # Do some damage!
5
+ end
6
+
7
+ end
8
+
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe <%= state_class %> do
4
+
5
+ pending "should ensure output has the right structure"
6
+
7
+ end
@@ -0,0 +1,3 @@
1
+ module Crabfarm
2
+ VERSION = "0.0.2"
3
+ end
metadata ADDED
@@ -0,0 +1,359 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: crabfarm
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Ignacio Baixas
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: jbuilder
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 2.2.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 2.2.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: selenium-webdriver
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '2.33'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '2.33'
41
+ - !ruby/object:Gem::Dependency
42
+ name: capybara
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: watir-webdriver
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: activesupport
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: 3.0.0
76
+ - - <
77
+ - !ruby/object:Gem::Version
78
+ version: '5'
79
+ type: :runtime
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - '>='
84
+ - !ruby/object:Gem::Version
85
+ version: 3.0.0
86
+ - - <
87
+ - !ruby/object:Gem::Version
88
+ version: '5'
89
+ - !ruby/object:Gem::Dependency
90
+ name: gli
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ~>
94
+ - !ruby/object:Gem::Version
95
+ version: 2.12.0
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ~>
101
+ - !ruby/object:Gem::Version
102
+ version: 2.12.0
103
+ - !ruby/object:Gem::Dependency
104
+ name: rainbow
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 2.0.0
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ~>
115
+ - !ruby/object:Gem::Version
116
+ version: 2.0.0
117
+ - !ruby/object:Gem::Dependency
118
+ name: grape
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ~>
122
+ - !ruby/object:Gem::Version
123
+ version: 0.10.0
124
+ type: :runtime
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ~>
129
+ - !ruby/object:Gem::Version
130
+ version: 0.10.0
131
+ - !ruby/object:Gem::Dependency
132
+ name: puma
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ~>
136
+ - !ruby/object:Gem::Version
137
+ version: 2.10.2
138
+ type: :runtime
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ~>
143
+ - !ruby/object:Gem::Version
144
+ version: 2.10.2
145
+ - !ruby/object:Gem::Dependency
146
+ name: bundler
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ~>
150
+ - !ruby/object:Gem::Version
151
+ version: '1.6'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ~>
157
+ - !ruby/object:Gem::Version
158
+ version: '1.6'
159
+ - !ruby/object:Gem::Dependency
160
+ name: rake
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - '>='
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ - !ruby/object:Gem::Dependency
174
+ name: rspec
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - '>='
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - '>='
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
187
+ - !ruby/object:Gem::Dependency
188
+ name: rspec-nc
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - '>='
192
+ - !ruby/object:Gem::Version
193
+ version: '0'
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - '>='
199
+ - !ruby/object:Gem::Version
200
+ version: '0'
201
+ - !ruby/object:Gem::Dependency
202
+ name: guard
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - '>='
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - '>='
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
215
+ - !ruby/object:Gem::Dependency
216
+ name: guard-rspec
217
+ requirement: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ type: :development
223
+ prerelease: false
224
+ version_requirements: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - '>='
227
+ - !ruby/object:Gem::Version
228
+ version: '0'
229
+ - !ruby/object:Gem::Dependency
230
+ name: terminal-notifier-guard
231
+ requirement: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - ~>
234
+ - !ruby/object:Gem::Version
235
+ version: 1.6.1
236
+ type: :development
237
+ prerelease: false
238
+ version_requirements: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - ~>
241
+ - !ruby/object:Gem::Version
242
+ version: 1.6.1
243
+ - !ruby/object:Gem::Dependency
244
+ name: pry
245
+ requirement: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - '>='
248
+ - !ruby/object:Gem::Version
249
+ version: '0'
250
+ type: :development
251
+ prerelease: false
252
+ version_requirements: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - '>='
255
+ - !ruby/object:Gem::Version
256
+ version: '0'
257
+ - !ruby/object:Gem::Dependency
258
+ name: pry-remote
259
+ requirement: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - '>='
262
+ - !ruby/object:Gem::Version
263
+ version: '0'
264
+ type: :development
265
+ prerelease: false
266
+ version_requirements: !ruby/object:Gem::Requirement
267
+ requirements:
268
+ - - '>='
269
+ - !ruby/object:Gem::Version
270
+ version: '0'
271
+ - !ruby/object:Gem::Dependency
272
+ name: pry-nav
273
+ requirement: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - '>='
276
+ - !ruby/object:Gem::Version
277
+ version: '0'
278
+ type: :development
279
+ prerelease: false
280
+ version_requirements: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - '>='
283
+ - !ruby/object:Gem::Version
284
+ version: '0'
285
+ description:
286
+ email:
287
+ - ignacio@platan.us
288
+ executables:
289
+ - crabfarm
290
+ extensions: []
291
+ extra_rdoc_files: []
292
+ files:
293
+ - lib/crabfarm/adapters/capybara_adapter.rb
294
+ - lib/crabfarm/adapters/surfer_adapter.rb
295
+ - lib/crabfarm/adapters/watir_adapter.rb
296
+ - lib/crabfarm/adapters.rb
297
+ - lib/crabfarm/base_parser.rb
298
+ - lib/crabfarm/base_state.rb
299
+ - lib/crabfarm/cli.rb
300
+ - lib/crabfarm/configuration.rb
301
+ - lib/crabfarm/context.rb
302
+ - lib/crabfarm/default_driver_factory.rb
303
+ - lib/crabfarm/driver_bucket.rb
304
+ - lib/crabfarm/driver_bucket_pool.rb
305
+ - lib/crabfarm/dsl/surfer/search_context.rb
306
+ - lib/crabfarm/dsl/surfer/surf_context.rb
307
+ - lib/crabfarm/dsl/surfer.rb
308
+ - lib/crabfarm/engines/safe_state_loop.rb
309
+ - lib/crabfarm/errors.rb
310
+ - lib/crabfarm/loader.rb
311
+ - lib/crabfarm/modes/console.rb
312
+ - lib/crabfarm/modes/generator.rb
313
+ - lib/crabfarm/modes/server.rb
314
+ - lib/crabfarm/module_helper.rb
315
+ - lib/crabfarm/phantom_driver_factory.rb
316
+ - lib/crabfarm/phantom_runner.rb
317
+ - lib/crabfarm/rspec.rb
318
+ - lib/crabfarm/state_store.rb
319
+ - lib/crabfarm/support/custom_puma.rb
320
+ - lib/crabfarm/templates/boot.rb.erb
321
+ - lib/crabfarm/templates/crabfarm_bin.erb
322
+ - lib/crabfarm/templates/Crabfile.erb
323
+ - lib/crabfarm/templates/dot_gitignore.erb
324
+ - lib/crabfarm/templates/dot_gitkeep.erb
325
+ - lib/crabfarm/templates/dot_rspec.erb
326
+ - lib/crabfarm/templates/Gemfile.erb
327
+ - lib/crabfarm/templates/parser.rb.erb
328
+ - lib/crabfarm/templates/parser_spec.rb.erb
329
+ - lib/crabfarm/templates/spec_helper.rb.erb
330
+ - lib/crabfarm/templates/state.rb.erb
331
+ - lib/crabfarm/templates/state_spec.rb.erb
332
+ - lib/crabfarm/version.rb
333
+ - lib/crabfarm.rb
334
+ - bin/crabfarm
335
+ homepage: https://github.com/platanus/crabfarm-gem
336
+ licenses:
337
+ - MIT
338
+ metadata: {}
339
+ post_install_message:
340
+ rdoc_options: []
341
+ require_paths:
342
+ - lib
343
+ required_ruby_version: !ruby/object:Gem::Requirement
344
+ requirements:
345
+ - - '>='
346
+ - !ruby/object:Gem::Version
347
+ version: '0'
348
+ required_rubygems_version: !ruby/object:Gem::Requirement
349
+ requirements:
350
+ - - '>='
351
+ - !ruby/object:Gem::Version
352
+ version: '0'
353
+ requirements: []
354
+ rubyforge_project:
355
+ rubygems_version: 2.0.14
356
+ signing_key:
357
+ specification_version: 4
358
+ summary: Crabfarm crawler creation framework
359
+ test_files: []