apollo-crawler 0.1.21 → 0.1.22

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 (55) hide show
  1. checksums.yaml +8 -8
  2. data/bin/apollo-crawler +0 -4
  3. data/bin/apollo-platform +30 -0
  4. data/config/amqp.yml +18 -0
  5. data/config/amqp.yml.default +18 -0
  6. data/config/apollo.yml +13 -0
  7. data/config/apollo.yml.default +10 -0
  8. data/config/memcached.yml +14 -0
  9. data/config/memcached.yml.default +14 -0
  10. data/config/mongo.yml +19 -0
  11. data/config/mongo.yml.default +19 -0
  12. data/config/mongoid.yml +23 -0
  13. data/config/mongoid.yml.default +59 -0
  14. data/lib/apollo_crawler.rb +12 -3
  15. data/lib/apollo_crawler/adapter/adapters.rb +22 -0
  16. data/lib/apollo_crawler/adapter/amqp_adapter.rb +26 -0
  17. data/lib/apollo_crawler/adapter/mongo_adapter.rb +26 -0
  18. data/lib/apollo_crawler/{cli/cli.rb → agent/agents.rb} +2 -0
  19. data/lib/apollo_crawler/agent/base_agent.rb +26 -0
  20. data/lib/apollo_crawler/cache/caches.rb +20 -0
  21. data/lib/apollo_crawler/cache/sqlite_cache.rb +9 -0
  22. data/lib/apollo_crawler/config.rb +82 -72
  23. data/lib/apollo_crawler/crawler/crawlers.rb +20 -0
  24. data/lib/apollo_crawler/crawler/google_crawler.rb +2 -2
  25. data/lib/apollo_crawler/crawler/hacker_news_crawler.rb +2 -2
  26. data/lib/apollo_crawler/crawler/slashdot_crawler.rb +2 -2
  27. data/lib/apollo_crawler/crawler/stackoverflow_crawler.rb +2 -2
  28. data/lib/apollo_crawler/crawler/xkcd_crawler.rb +2 -2
  29. data/lib/apollo_crawler/crawler/youjizz_crawler.rb +2 -2
  30. data/lib/apollo_crawler/env.rb +24 -0
  31. data/lib/apollo_crawler/fetcher/base_fetcher.rb +1 -1
  32. data/lib/apollo_crawler/fetcher/fetchers.rb +20 -0
  33. data/lib/apollo_crawler/fetcher/simple_fetcher.rb +1 -1
  34. data/lib/apollo_crawler/fetcher/smart_fetcher.rb +1 -1
  35. data/lib/apollo_crawler/formatter/formatters.rb +20 -0
  36. data/lib/apollo_crawler/formatter/json_formatter.rb +5 -1
  37. data/lib/apollo_crawler/formatter/plain_formatter.rb +4 -0
  38. data/lib/apollo_crawler/formatter/table_formatter.rb +4 -0
  39. data/lib/apollo_crawler/helper/amqp_helper.rb +26 -0
  40. data/lib/apollo_crawler/helper/core_helper.rb +24 -4
  41. data/lib/apollo_crawler/helper/helpers.rb +23 -1
  42. data/lib/apollo_crawler/helper/mongo_helper.rb +26 -0
  43. data/lib/apollo_crawler/lib.rb +12 -3
  44. data/lib/apollo_crawler/logger/loggers.rb +20 -0
  45. data/lib/apollo_crawler/planner/base_planner.rb +26 -0
  46. data/lib/apollo_crawler/planner/planners.rb +22 -0
  47. data/lib/apollo_crawler/planner/smart_planner.rb +28 -0
  48. data/lib/apollo_crawler/program/base_program.rb +130 -0
  49. data/lib/apollo_crawler/program/console_program.rb +177 -0
  50. data/lib/apollo_crawler/program/crawler_program.rb +130 -183
  51. data/lib/apollo_crawler/program/platform_program.rb +137 -0
  52. data/lib/apollo_crawler/program/programs.rb +23 -1
  53. data/lib/apollo_crawler/store/stores.rb +20 -0
  54. data/lib/apollo_crawler/version.rb +2 -2
  55. metadata +55 -3
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NWM2MjFlZGYyOTI5OGI4OWJlZWM2YmM0Zjg1NTAxZTcwZDkxYTEzZA==
4
+ MjNkN2YzMjExMDc4Mjg5ZDNhNGMxYTY0MTY1NjczMDQ0MzE4YmFlOQ==
5
5
  data.tar.gz: !binary |-
6
- NzZiMGRhMzI1ZmVjMjE2ODcwMzJlZDllMDZmNjYzYWYwNGUwNzE2Mw==
6
+ ZWVlM2UyZjhhZDM4Y2ExZGExNzkzNjNjNjNkNTI4OTRkOTEzY2Y5NA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- MzY0NTQ3OTE2OTUyMWI1NDA2N2QwNGEwNzMxMDhmMTM4ODk3ZjgzODA5ZmU4
10
- MmM2NWI3OTIzMTFmZDNlZjg2ODIxZDZmMjFhMDU3OTUwYjljYmJhNWE1NTkx
11
- NWExNTg2OTUyMjY3ZWQ3YWQ3ODJjYzkzMDA0ODkzMjgzMjI4MGQ=
9
+ ZDc0YmI0MjEyNTgzNTM0NmY2NGE2YTY0Y2MxNTdiNTBkN2M3ZDM2MDdmNjZm
10
+ MjNhZDVlNmRkNDdkMDVhNzhjNzg0ZDQ2ZjRkYThhNzJlODMxNjE3NmE4MjVm
11
+ ZDg0ZjFlZWFjM2I0NWQ0ZmIzYmM5ZmY0MTRiOGE2YTMwZDVmYzE=
12
12
  data.tar.gz: !binary |-
13
- ZGU1MjY3N2JmZWFkOWE5Y2Q0Y2ViNmM4YjFkZjM2NGNmMzc3OGRlNGUxMjU2
14
- Yzk1MWU2NDMwOGNhZjUwNmMzZjRhZmZjOWRmYzAzZWYyMzQ1MjNlMTU4YWYz
15
- ZDMzYTliMDVkYTQzYjlmMmZjNWEzMmVmMjgzZTE2OWJiOWE0Yjk=
13
+ N2I5ZGM1NjI2M2QxN2FmMDZkMThkOGU5NDE5MTEyOTNlZWFkNGQ1N2FlZjFi
14
+ MTI5ZGNhNjdmZTAyZjAyYTVkZWFlNGJmZDk5YzA3ZjlhN2Q5MTc1NTIyNGVi
15
+ M2VjODgxNzQyYTAxNzQ5NWQ5MTQzZjUxNWY5MWZlNDQzNjg2YmQ=
@@ -28,7 +28,3 @@ require File.join(File.dirname(__FILE__), "..", "lib", "apollo_crawler")
28
28
 
29
29
  Apollo::CrawlerProgram.new.run(ARGV)
30
30
 
31
- # TODO: Maybe consider enabling this?
32
- # if __FILE__ == $0
33
- # Apollo::CrawlerProgram.new.run(ARGV)
34
- # end
@@ -0,0 +1,30 @@
1
+ #! /usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ # Copyright, 2013, by Tomas Korcak. <korczis@gmail.com>
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to deal
8
+ # in the Software without restriction, including without limitation the rights
9
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ # copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included in
14
+ # all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+ # THE SOFTWARE.
23
+
24
+ require "rubygems"
25
+ require "bundler/setup"
26
+
27
+ require File.join(File.dirname(__FILE__), "..", "lib", "apollo_crawler")
28
+
29
+ Apollo::PlatformProgram.new.run(ARGV)
30
+
@@ -0,0 +1,18 @@
1
+ default: &default
2
+ host: localhost
3
+ username: guest
4
+ password: guest
5
+
6
+ development:
7
+ <<: *default
8
+ vhost: apollo-crawler-development
9
+
10
+ test:
11
+ <<: *default
12
+ host: apollo-crawler.no-ip.org
13
+ vhost: apollo-crawler-test
14
+
15
+ production:
16
+ <<: *default
17
+ host: apollo-crawler.no-ip.org
18
+ vhost: apollo-crawler-production
@@ -0,0 +1,18 @@
1
+ default: &default
2
+ host: localhost
3
+ username: guest
4
+ password: guest
5
+
6
+ development:
7
+ <<: *default
8
+ vhost: apollo-crawler-development
9
+
10
+ test:
11
+ <<: *default
12
+ host: apollo-crawler.no-ip.org
13
+ vhost: apollo-crawler-test
14
+
15
+ production:
16
+ <<: *default
17
+ host: apollo-crawler.no-ip.org
18
+ vhost: apollo-crawler-production
@@ -0,0 +1,13 @@
1
+ default: &default
2
+ host: localhost
3
+
4
+ development:
5
+ <<: *default
6
+
7
+ test:
8
+ <<: *default
9
+ host: apollo-crawler.no-ip.org
10
+
11
+ production:
12
+ <<: *default
13
+ host: apollo-crawler.no-ip.org
@@ -0,0 +1,10 @@
1
+ default: &default
2
+
3
+ development:
4
+ <<: *default
5
+
6
+ test:
7
+ <<: *default
8
+
9
+ production:
10
+ <<: *default
@@ -0,0 +1,14 @@
1
+ default: &default
2
+ host: localhost
3
+ port: 11211
4
+
5
+ development:
6
+ <<: *default
7
+
8
+ test:
9
+ host: apollo-crawler.no-ip.org
10
+ <<: *default
11
+
12
+ production:
13
+ <<: *default
14
+ host: apollo-crawler.no-ip.org
@@ -0,0 +1,14 @@
1
+ default: &default
2
+ host: localhost
3
+ port: 11211
4
+
5
+ development:
6
+ <<: *default
7
+
8
+ test:
9
+ host: apollo-crawler.no-ip.org
10
+ <<: *default
11
+
12
+ production:
13
+ <<: *default
14
+ host: apollo-crawler.no-ip.org
@@ -0,0 +1,19 @@
1
+ default: &default
2
+ port: 27017
3
+ username: guest
4
+ password: guest
5
+ db: apollo-crawler
6
+
7
+ development:
8
+ <<: *default
9
+ db: apollo-crawler-development
10
+
11
+ test:
12
+ <<: *default
13
+ host: apollo-crawler.no-ip.org
14
+ db: apollo-crawler-test
15
+
16
+ production:
17
+ <<: *default
18
+ host: apollo-crawler.no-ip.org
19
+ db: apollo-crawler-production
@@ -0,0 +1,19 @@
1
+ default: &default
2
+ port: 27017
3
+ username: guest
4
+ password: guest
5
+ db: apollo-crawler
6
+
7
+ development:
8
+ <<: *default
9
+ db: apollo-crawler-development
10
+
11
+ test:
12
+ <<: *default
13
+ host: apollo-crawler.no-ip.org
14
+ db: apollo-crawler-test
15
+
16
+ production:
17
+ <<: *default
18
+ host: apollo-crawler.no-ip.org
19
+ db: apollo-crawler-production
@@ -0,0 +1,23 @@
1
+ default: &default
2
+ sessions:
3
+ default:
4
+ hosts:
5
+ - apollo-crawler.no-ip.org:27017
6
+
7
+ development:
8
+ <<: *default
9
+ sessions:
10
+ default:
11
+ database: apollo-crawler-development
12
+
13
+ test:
14
+ <<: *default
15
+ sessions:
16
+ default:
17
+ database: apollo-crawler-test
18
+
19
+ production:
20
+ <<: *default
21
+ sessions:
22
+ default:
23
+ database: apollo-crawler-production
@@ -0,0 +1,59 @@
1
+ # Tell Mongoid which environment this configuration is for.
2
+ production:
3
+ # This starts the session configuration settings. You may have as
4
+ # many sessions as you like, but you must have at least 1 named
5
+ # 'default'.
6
+ sessions:
7
+ # Define the default session.
8
+ default:
9
+ # A session can have any number of hosts. Usually 1 for a single
10
+ # server setup, and at least 3 for a replica set. Hosts must be
11
+ # an array of host:port pairs. This session is single server.
12
+ hosts:
13
+ - flame.mongohq.com:27017
14
+ # Define the default database name.
15
+ database: mongoid
16
+ # Since this database points at a session connected to MongoHQ, we must
17
+ # provide the authentication details.
18
+ username: user
19
+ password: password
20
+ # This defines a secondary session at a replica set.
21
+ replica_set:
22
+ # This configuration is a 3 node replica set.
23
+ hosts:
24
+ - dedicated1.myapp.com:27017
25
+ - dedicated2.myapp.com:27017
26
+ - dedicated3.myapp.com:27017
27
+ database: mongoid
28
+ # We can set session specific options, like reads executing
29
+ # on secondary nodes, and defaulting the session to safe mode.
30
+ options:
31
+ consistency: :eventual
32
+ safe: true
33
+ # This defines a tertiary session at a Mongos fronted shard.
34
+ shard:
35
+ # This configuration is a Mongos shard server.
36
+ hosts:
37
+ - mongos.myapp.com:27017
38
+ database: mongoid
39
+ # This configuration shows an authenticated replica set via a uri.
40
+ another:
41
+ uri: mongodb://user:pass@59.1.22.1:27017,59.1.22.2:27017/mongoid
42
+ # Here we put the Mongoid specific configuration options. These are explained
43
+ # in more detail next.
44
+ options:
45
+ allow_dynamic_fields: false
46
+ identity_map_enabled: true
47
+ include_root_in_json: true
48
+ include_type_for_serialization: true
49
+ # Note this can also be true if you want to preload everything, but this is
50
+ # almost never necessary. Most of the time set this to false.
51
+ preload_models:
52
+ - Canvas
53
+ - Browser
54
+ - Firefox
55
+ scope_overwrite_exception: true
56
+ raise_not_found_error: false
57
+ skip_version_check: false
58
+ use_activesupport_time_zone: false
59
+ use_utc: true
@@ -21,12 +21,18 @@
21
21
  # TODO: Make this work - DRY!
22
22
  # require File.join(File.dirname(__FILE__), 'apollo_crawler/lib')
23
23
 
24
+ # Config First
25
+ require File.join(File.dirname(__FILE__), 'apollo_crawler/env')
26
+
27
+ # Adapters
28
+ require File.join(File.dirname(__FILE__), 'apollo_crawler/adapter/adapters')
29
+
30
+ # Agents
31
+ require File.join(File.dirname(__FILE__), 'apollo_crawler/agent/agents')
32
+
24
33
  # Caches
25
34
  require File.join(File.dirname(__FILE__), 'apollo_crawler/cache/caches')
26
35
 
27
- # CLI - Command Line Interface
28
- require File.join(File.dirname(__FILE__), 'apollo_crawler/cli/cli')
29
-
30
36
  # Crawlers
31
37
  require File.join(File.dirname(__FILE__), 'apollo_crawler/crawler/crawlers')
32
38
 
@@ -42,6 +48,9 @@ require File.join(File.dirname(__FILE__), 'apollo_crawler/helper/helpers')
42
48
  # Loggers
43
49
  require File.join(File.dirname(__FILE__), 'apollo_crawler/logger/loggers')
44
50
 
51
+ # Planner
52
+ require File.join(File.dirname(__FILE__), 'apollo_crawler/planner/planners')
53
+
45
54
  # Program
46
55
  require File.join(File.dirname(__FILE__), 'apollo_crawler/program/programs')
47
56
 
@@ -0,0 +1,22 @@
1
+ # Copyright, 2013, by Tomas Korcak. <korczis@gmail.com>
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in
11
+ # all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ # THE SOFTWARE.
20
+
21
+ require File.join(File.dirname(__FILE__), 'amqp_adapter')
22
+ require File.join(File.dirname(__FILE__), 'mongo_adapter')
@@ -0,0 +1,26 @@
1
+ # Copyright, 2013, by Tomas Korcak. <korczis@gmail.com>
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in
11
+ # all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ # THE SOFTWARE.
20
+
21
+ module Apollo
22
+ module Adapter
23
+ class AmqpAdapter
24
+ end # class AmqpAdapter
25
+ end # module Adapter
26
+ end # module Apollo
@@ -0,0 +1,26 @@
1
+ # Copyright, 2013, by Tomas Korcak. <korczis@gmail.com>
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in
11
+ # all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ # THE SOFTWARE.
20
+
21
+ module Apollo
22
+ module Adapter
23
+ class MongoAdapter
24
+ end # class AmqpAdapter
25
+ end # module MongoAdapter
26
+ end # module Apollo
@@ -17,3 +17,5 @@
17
17
  # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
18
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
19
  # THE SOFTWARE.
20
+
21
+ require File.join(File.dirname(__FILE__), 'base_agent')
@@ -0,0 +1,26 @@
1
+ # Copyright, 2013, by Tomas Korcak. <korczis@gmail.com>
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in
11
+ # all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ # THE SOFTWARE.
20
+
21
+ module Apollo
22
+ module Agent
23
+ class BaseAgent
24
+ end # class BaseAgent
25
+ end # module Agent
26
+ end # module Apollo
@@ -1,3 +1,23 @@
1
+ # Copyright, 2013, by Tomas Korcak. <korczis@gmail.com>
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in
11
+ # all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ # THE SOFTWARE.
20
+
1
21
  require File.join(File.dirname(__FILE__), 'base_cache')
2
22
  require File.join(File.dirname(__FILE__), 'memcached_cache')
3
23
  require File.join(File.dirname(__FILE__), 'memory_cache')