vayacondios-server 0.2.11 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. data/.gitignore +3 -1
  2. data/.travis.yml +2 -0
  3. data/Gemfile +15 -9
  4. data/LICENSE.md +2 -6
  5. data/Procfile +1 -1
  6. data/README.md +656 -111
  7. data/Rakefile +89 -6
  8. data/bin/vcd +10 -0
  9. data/bin/vcd-server +8 -0
  10. data/config/database.yml +6 -0
  11. data/config/spec.example.yml +18 -0
  12. data/config/vayacondios.example.yml +15 -0
  13. data/config/vcd-server.rb +37 -0
  14. data/examples/configuration.rb +56 -0
  15. data/examples/event_stream.rb +19 -0
  16. data/examples/simple.rb +61 -0
  17. data/features/event.feature +319 -0
  18. data/features/events.feature +208 -0
  19. data/features/stash.feature +840 -0
  20. data/features/stashes.feature +492 -0
  21. data/features/step_definitions/stash_steps.rb +113 -0
  22. data/features/stream.feature +30 -0
  23. data/features/support/em.rb +14 -0
  24. data/features/support/env.rb +13 -0
  25. data/lib/vayacondios/configuration.rb +63 -0
  26. data/lib/vayacondios/server/api.rb +126 -0
  27. data/lib/vayacondios/server/api_options.rb +56 -0
  28. data/lib/vayacondios/server/configuration.rb +23 -0
  29. data/lib/vayacondios/server/driver.rb +71 -0
  30. data/lib/vayacondios/server/drivers/mongo.rb +126 -0
  31. data/lib/vayacondios/server/handlers/document_handler.rb +81 -0
  32. data/lib/vayacondios/server/handlers/event_handler.rb +31 -26
  33. data/lib/vayacondios/server/handlers/events_handler.rb +31 -0
  34. data/lib/vayacondios/server/handlers/stash_handler.rb +69 -0
  35. data/lib/vayacondios/server/handlers/stashes_handler.rb +49 -0
  36. data/lib/vayacondios/server/handlers/stream_handler.rb +39 -0
  37. data/lib/vayacondios/server/models/document.rb +87 -0
  38. data/lib/vayacondios/server/models/event.rb +198 -0
  39. data/lib/vayacondios/server/models/stash.rb +100 -0
  40. data/lib/vayacondios/server.rb +35 -0
  41. data/lib/vayacondios-server.rb +19 -13
  42. data/lib/vayacondios.rb +22 -0
  43. data/pom.xml +124 -4
  44. data/spec/configuration_spec.rb +41 -0
  45. data/spec/server/api_options_spec.rb +32 -0
  46. data/spec/server/api_spec.rb +279 -0
  47. data/spec/server/configuration_spec.rb +27 -0
  48. data/spec/server/drivers/mongo_spec.rb +107 -0
  49. data/spec/server/handlers/event_handler_spec.rb +62 -0
  50. data/spec/server/handlers/events_handler_spec.rb +51 -0
  51. data/spec/server/handlers/stash_handler_spec.rb +68 -0
  52. data/spec/server/handlers/stashes_handler_spec.rb +50 -0
  53. data/spec/server/handlers/stream_handler_spec.rb +5 -0
  54. data/spec/server/models/document_spec.rb +9 -0
  55. data/spec/server/models/event_spec.rb +185 -0
  56. data/spec/server/models/stash_spec.rb +95 -0
  57. data/spec/spec_helper.rb +23 -3
  58. data/spec/support/database_helper.rb +42 -0
  59. data/spec/support/log_helper.rb +19 -0
  60. data/spec/support/shared_context_for_events.rb +22 -0
  61. data/spec/support/shared_context_for_stashes.rb +24 -0
  62. data/spec/support/shared_examples_for_handlers.rb +32 -0
  63. data/src/main/java/com/infochimps/vayacondios/BaseClient.java +342 -0
  64. data/src/main/java/com/infochimps/vayacondios/HTTPClient.java +426 -0
  65. data/src/main/java/com/infochimps/vayacondios/VayacondiosClient.java +487 -65
  66. data/src/main/java/com/infochimps/vayacondios/test/IntegrationTest.java +3 -0
  67. data/src/test/java/com/infochimps/vayacondios/BaseClientTest.java +50 -0
  68. data/src/test/java/com/infochimps/vayacondios/HTTPClientIT.java +267 -0
  69. data/vayacondios-server.gemspec +9 -9
  70. metadata +127 -122
  71. checksums.yaml +0 -15
  72. data/.rspec +0 -2
  73. data/.yardopts +0 -10
  74. data/Guardfile +0 -41
  75. data/app/http_shim.rb +0 -71
  76. data/bin/vcd.sh +0 -27
  77. data/config/http_shim.rb +0 -43
  78. data/config/vayacondios.example.yaml +0 -7
  79. data/config/vayacondios.yaml +0 -7
  80. data/examples/java/ItemSetTest.java +0 -76
  81. data/lib/tasks/publish.rake +0 -23
  82. data/lib/tasks/spec.rake +0 -11
  83. data/lib/tasks/yard.rake +0 -2
  84. data/lib/vayacondios/client/config.rb +0 -7
  85. data/lib/vayacondios/client/configliere.rb +0 -38
  86. data/lib/vayacondios/client/cube_client.rb +0 -39
  87. data/lib/vayacondios/client/http_client.rb +0 -49
  88. data/lib/vayacondios/client/itemset.rb +0 -130
  89. data/lib/vayacondios/client/legacy_switch.rb +0 -43
  90. data/lib/vayacondios/client/notifier.rb +0 -123
  91. data/lib/vayacondios/client/zabbix_client.rb +0 -148
  92. data/lib/vayacondios/legacy_switch.rb +0 -43
  93. data/lib/vayacondios/server/errors/bad_request.rb +0 -6
  94. data/lib/vayacondios/server/errors/not_found.rb +0 -6
  95. data/lib/vayacondios/server/handlers/config_handler.rb +0 -32
  96. data/lib/vayacondios/server/handlers/itemset_handler.rb +0 -60
  97. data/lib/vayacondios/server/legacy_switch.rb +0 -43
  98. data/lib/vayacondios/server/model/config_document.rb +0 -89
  99. data/lib/vayacondios/server/model/document.rb +0 -25
  100. data/lib/vayacondios/server/model/event_document.rb +0 -94
  101. data/lib/vayacondios/server/model/itemset_document.rb +0 -126
  102. data/lib/vayacondios/server/rack/extract_methods.rb +0 -35
  103. data/lib/vayacondios/server/rack/jsonize.rb +0 -43
  104. data/lib/vayacondios/server/rack/params.rb +0 -50
  105. data/lib/vayacondios/server/rack/path.rb +0 -23
  106. data/lib/vayacondios/server/rack/path_validation.rb +0 -22
  107. data/lib/vayacondios/version.rb +0 -3
  108. data/lib/vayacondios-client.rb +0 -22
  109. data/scripts/hadoop_monitor/configurable.rb +0 -66
  110. data/scripts/hadoop_monitor/hadoop_attempt_scraper.rb +0 -45
  111. data/scripts/hadoop_monitor/hadoop_client.rb +0 -273
  112. data/scripts/hadoop_monitor/hadoop_monitor.rb +0 -101
  113. data/scripts/hadoop_monitor/hadoopable.rb +0 -65
  114. data/scripts/hadoop_monitor/machine_monitor.rb +0 -115
  115. data/scripts/s3_cataloger/buckets +0 -33
  116. data/scripts/s3_cataloger/foreach_bucket +0 -88
  117. data/scripts/s3_cataloger/parse_ls.py +0 -391
  118. data/spec/client/itemset_legacy_spec.rb +0 -55
  119. data/spec/client/itemset_spec.rb +0 -60
  120. data/spec/client/notifier_spec.rb +0 -120
  121. data/spec/server/config_spec.rb +0 -113
  122. data/spec/server/event_spec.rb +0 -103
  123. data/spec/server/itemset_legacy_spec.rb +0 -320
  124. data/spec/server/itemset_spec.rb +0 -317
  125. data/spec/server/rack/extract_methods_spec.rb +0 -60
  126. data/spec/server/rack/path_spec.rb +0 -36
  127. data/spec/server/rack/path_validation_spec.rb +0 -22
  128. data/spec/server/server_spec.rb +0 -20
  129. data/spec/support/mongo_cleaner.rb +0 -32
  130. data/src/main/java/ItemSetTest.java +0 -76
  131. data/src/main/java/com/infochimps/util/CurrentClass.java +0 -26
  132. data/src/main/java/com/infochimps/util/DebugUtil.java +0 -38
  133. data/src/main/java/com/infochimps/util/HttpHelper.java +0 -181
  134. data/src/main/java/com/infochimps/vayacondios/ItemSets.java +0 -373
  135. data/src/main/java/com/infochimps/vayacondios/LinkToVCD.java +0 -18
  136. data/src/main/java/com/infochimps/vayacondios/MemoryVCDShim.java +0 -84
  137. data/src/main/java/com/infochimps/vayacondios/Organization.java +0 -62
  138. data/src/main/java/com/infochimps/vayacondios/PathBuilder.java +0 -13
  139. data/src/main/java/com/infochimps/vayacondios/StandardVCDLink.java +0 -218
  140. data/src/main/java/com/infochimps/vayacondios/VCDIntegrationTest.java +0 -108
  141. data/src/test/java/com/infochimps/vayacondios/TestVayacondiosInMemory.java +0 -78
  142. data/vayacondios-client.gemspec +0 -25
@@ -1,218 +0,0 @@
1
- package com.infochimps.vayacondios;
2
- import com.google.gson.Gson;
3
- import com.google.gson.GsonBuilder;
4
- import com.google.gson.JsonArray;
5
- import com.google.gson.JsonElement;
6
- import com.google.gson.JsonIOException;
7
- import com.google.gson.JsonObject;
8
- import com.google.gson.JsonParser;
9
- import com.google.gson.JsonPrimitive;
10
- import com.google.gson.JsonParseException;
11
- import com.google.gson.JsonSerializer;
12
- import com.google.gson.JsonSerializationContext;
13
- import com.google.gson.JsonSyntaxException;
14
-
15
-
16
- import java.io.BufferedReader;
17
- import java.io.FileNotFoundException;
18
- import java.io.InputStream;
19
- import java.io.OutputStream;
20
- import java.io.IOException;
21
- import java.net.HttpURLConnection;
22
- import java.nio.charset.Charset;
23
- import java.util.ArrayList;
24
- import java.util.HashMap;
25
- import java.util.List;
26
- import java.util.Map;
27
-
28
- import java.net.URL;
29
-
30
- import org.slf4j.Logger;
31
-
32
- import com.infochimps.util.DebugUtil;
33
- import com.infochimps.util.HttpHelper;
34
- import static com.infochimps.util.CurrentClass.getLogger;
35
- import static com.infochimps.vayacondios.ItemSets.Item;
36
-
37
- public class StandardVCDLink extends LinkToVCD {
38
- public List<Item> fetch(String topic, String id) throws IOException {
39
- BufferedReader reader = null;
40
- try {
41
- reader = openUrl(getParent().urlString(PATH_COMPONENT, topic, id));
42
- } catch (FileNotFoundException ex) {
43
- // In the case of a 404, return an empty set.
44
- return new ArrayList();
45
- }
46
- String line = reader.readLine();
47
- JsonElement response;
48
- JsonElement itemSet;
49
-
50
- ArrayList<Item> result = new ArrayList<Item>();
51
-
52
- // assume Vayacondios response comes in a single line
53
- if (line != null &&
54
- (itemSet = VCD_HANDLER.extractContents(PARSER.parse(line))) != null) {
55
- for (JsonElement elem : itemSet.getAsJsonArray()) {
56
- if (!elem.isJsonPrimitive()) {
57
- LOG.warn("ignoring non-primitive in itemset: " + elem);
58
- continue;
59
- }
60
-
61
- JsonPrimitive item = elem.getAsJsonPrimitive();
62
- if (item.isBoolean()) result.add(new Item(item.getAsBoolean()));
63
- else if (item.isNumber()) result.add(new Item(item.getAsNumber()));
64
- else if (item.isString()) result.add(new Item(item.getAsString()));
65
-
66
- else LOG.warn("ignoring unrecognized type in itemset: " + item);
67
- }
68
- }
69
-
70
- if ((line = reader.readLine()) != null)
71
- LOG.warn("expected eof but saw " + line);
72
-
73
- reader.close();
74
-
75
- return result;
76
- }
77
-
78
- public void mutate(String method,
79
- String topic,
80
- String id,
81
- List<Item> items) throws IOException {
82
-
83
- // serialize the items
84
- String body = VCD_HANDLER.wrapContents(items);
85
- // connect to our standard path
86
- URL url = new URL(getParent().urlString(PATH_COMPONENT, topic, id));
87
- HttpURLConnection connection = (HttpURLConnection)
88
- ((Boolean.valueOf(System.getProperty("ics.http.use_charles"))) ?
89
- url.openConnection(DebugUtil.useCharles()) : url.openConnection());
90
-
91
- // configure connection
92
- connection.setDoOutput(true);
93
-
94
- // NOTE: Uncommenting this (and not calling
95
- // connection.getInputStream()) causes Java to hang without
96
- // sending its payload.
97
-
98
- // connection.setDoInput(false);
99
-
100
- if (method.equals("DELETE")) {
101
- connection.setRequestMethod("PUT");
102
- connection.setRequestProperty("X-Method", "DELETE");
103
- } else if (method.equals("PATCH")) {
104
- connection.setRequestMethod("PUT");
105
- connection.setRequestProperty("X-Method", "PATCH");
106
- } else connection.setRequestMethod(method);
107
- connection.setRequestProperty("Content-Type", "application/json");
108
- connection.setRequestProperty("Accept", "*/*");
109
- connection.setRequestProperty("Content-Length",
110
- Integer.toString(body.getBytes().length));
111
- connection.setUseCaches(false);
112
-
113
- LOG.debug("sending: " + body);
114
- LOG.debug("via " +
115
- connection.getRequestMethod() +
116
- " to " +
117
- getParent().urlString(PATH_COMPONENT, topic, id));
118
-
119
- // connect and write
120
- OutputStream os = connection.getOutputStream();
121
- os.write(body.getBytes("UTF-8"));
122
- os.flush();
123
- os.close();
124
-
125
- // ignore reponse
126
- InputStream is = connection.getInputStream();
127
-
128
- LOG.trace("ignoring response from Vayacondios.");
129
- byte buf[] = new byte[256];
130
- while (is.read(buf) != -1);
131
- LOG.trace("response ignored.");
132
- is.close();
133
-
134
- // fin.
135
- connection.disconnect();
136
- }
137
-
138
- //----------------------------------------------------------------------------
139
-
140
- public static void forceLegacy(boolean vcdLegacy) {
141
- LOG.info("forcing vayacondios {} mode", vcdLegacy ? "legacy" : "standard");
142
-
143
- VCD_HANDLER = vcdLegacy ?
144
- new LegacyContentsHandler() : new StandardContentsHandler();
145
- }
146
-
147
- //----------------------------------------------------------------------------
148
-
149
- private BufferedReader openUrl(String urlString) throws IOException {
150
- HashMap headers = new HashMap();
151
- headers.put("Accept", "*/*");
152
- return HttpHelper.open(LOG, urlString, headers, Charset.forName("UTF-8"));
153
- }
154
-
155
- private static final Gson GSON = new GsonBuilder().
156
- registerTypeAdapter(Item.class, new Item.Serializer()).
157
- create();
158
- private static final JsonParser PARSER = new JsonParser();
159
- private static final Logger LOG = getLogger();
160
- private static final String PATH_COMPONENT = "itemset";
161
-
162
- private static LegacySwitch VCD_HANDLER = new StandardContentsHandler();
163
-
164
- //----------------------------------------------------------------------------
165
-
166
- private static interface LegacySwitch {
167
- String wrapContents(List<Item> items);
168
- JsonArray extractContents(JsonElement response);
169
- }
170
-
171
- private static class LegacyContentsHandler implements LegacySwitch {
172
- @Override
173
- public String wrapContents(List<Item> items) {
174
- String json = GSON.toJson(items);
175
- LOG.trace("results of wrapping with legacy handler: {}", json);
176
- return json;
177
- }
178
- @Override
179
- public JsonArray extractContents(JsonElement response) {
180
- if (response.isJsonArray()) {
181
- return response.getAsJsonArray();
182
- } else { return null; }
183
- }
184
- }
185
-
186
- private static class StandardContentsHandler implements LegacySwitch {
187
- @Override
188
- public String wrapContents(final List<Item> items) {
189
- // not at all sure why GSON is returning null given a
190
- // Map<String,List<Item>> all of the sudden, but it seems to
191
- // work on a Map<String,List<String>>, so here we go.
192
- Map<String,List<String>> contents =
193
- new HashMap<String,List<String>>();
194
- List<String> strItems = new ArrayList<String>();
195
- for (Item item : items) {
196
- strItems.add(item.getObject().toString());
197
- }
198
- contents.put("contents", strItems);
199
- LOG.trace("contents: {}", contents);
200
- String json = GSON.toJson(contents);
201
- LOG.trace("results of wrapping with standard handler: {}", json);
202
- return json;
203
- }
204
- @Override
205
- public JsonArray extractContents(JsonElement response) {
206
- JsonElement itemSet;
207
-
208
- if (response.isJsonObject()) {
209
- if ((itemSet = response.getAsJsonObject().get("contents"))
210
- .isJsonArray()) {
211
- return itemSet.getAsJsonArray();
212
- }
213
- }
214
-
215
- return null;
216
- }
217
- }
218
- }
@@ -1,108 +0,0 @@
1
- package com.infochimps.vayacondios;
2
-
3
- import com.infochimps.vayacondios.VayacondiosClient;
4
- import com.infochimps.vayacondios.StandardVCDLink;
5
-
6
- import static com.infochimps.util.CurrentClass.getLogger;
7
-
8
- import static com.infochimps.vayacondios.ItemSets.Item;
9
- import static com.infochimps.vayacondios.ItemSets.ItemSet;
10
- import com.infochimps.vayacondios.ItemSets;
11
-
12
- import java.io.IOException;
13
- import java.util.Arrays;
14
- import java.util.ArrayList;
15
- import java.util.Iterator;
16
- import java.util.List;
17
-
18
- import org.slf4j.Logger;
19
-
20
- public class VCDIntegrationTest {
21
- private static final int VCD_PORT = 8000;
22
- private static final Logger LOG = getLogger();
23
-
24
- public static void setUp() {
25
- // This will default to false when the property is null, which is
26
- // what we happen to want.
27
- boolean legacyMode =
28
- Boolean.valueOf(System.getProperty("vayacondios.legacy"));
29
- LOG.info("Using Vayacondios {} mode", legacyMode ? "legacy" : "standard");
30
- StandardVCDLink.forceLegacy(legacyMode);
31
- }
32
- private static ItemSets itemSets() {
33
- return new VayacondiosClient("localhost", VCD_PORT).
34
- organization("org").
35
- itemsets();
36
- }
37
-
38
- private static List<Item> buildItemList(String items[]) {
39
- List<Item> result = new ArrayList<Item>();
40
- for (String s : items) result.add(new Item(s));
41
- return result;
42
- }
43
-
44
- private static List<String> getStrings(List<Item> items) {
45
- List<String> result = new ArrayList<String>();
46
- for (Item i : items) result.add(i.getAsString());
47
- return result;
48
- }
49
-
50
- private static List<String> fetch() throws IOException {
51
- return getStrings(itemSets().fetch("topic", "id"));
52
- }
53
-
54
- private static void create(String... items) throws IOException {
55
- itemSets().create("topic", "id", buildItemList(items));
56
- }
57
-
58
- private static void remove(String... items) throws IOException {
59
- itemSets().remove("topic", "id", buildItemList(items));
60
- }
61
-
62
- private static void update(String... items) throws IOException {
63
- itemSets().update("topic", "id", buildItemList(items));
64
- }
65
-
66
- private static void assertEquals(String... expectedArr)
67
- throws IOException {
68
- List<String> items = fetch();
69
- List<String> copy = new ArrayList<String>();
70
- List<String> expected = Arrays.asList(expectedArr);
71
-
72
- if (!items.containsAll(expected)) {
73
- copy = new ArrayList(); copy.addAll(expected);
74
- LOG.trace("removing items. copy change? " + copy.removeAll(items));
75
- System.out.println("\033[31mFAIL\033[0m: expected but absent: " + copy);
76
- } else
77
- System.out.println("\033[32mSUCCESS\033[0m: all expected items present");
78
- if (!expected.containsAll(items)) {
79
- copy = new ArrayList(); copy.addAll(items);
80
- LOG.trace("removing items. copy change? " + copy.removeAll(expected));
81
- System.out.println("\033[31mFAIL\033[0m: unexpected and present: " + copy);
82
- } else
83
- System.out.println("\033[32mSUCCESS\033[0m: no unexpected items present");
84
- }
85
-
86
- public static void main(String argv[]) {
87
- System.out.println("*** If Vayacondios is not running on port " + VCD_PORT + ", " +
88
- "this will fail. ***");
89
- System.out.println("Running Vayacondios integration test...");
90
-
91
- setUp();
92
-
93
- try {
94
- create("foo", "baz", "bar", "bing");
95
- assertEquals("foo", "baz", "bar", "bing");
96
-
97
- update("biff");
98
- assertEquals("foo", "baz", "bar", "bing", "biff");
99
-
100
- remove("biff", "bar");
101
- assertEquals("foo", "baz", "bing");
102
-
103
- System.out.println("Integration test complete.");
104
- } catch (Exception ex) {
105
- ex.printStackTrace();
106
- }
107
- }
108
- }
@@ -1,78 +0,0 @@
1
- package com.infochimps.vayacondios;
2
-
3
- import com.infochimps.vayacondios.VayacondiosClient;
4
-
5
- import static com.infochimps.util.CurrentClass.getLogger;
6
-
7
- import com.infochimps.vayacondios.MemoryVCDShim;
8
- import static com.infochimps.vayacondios.ItemSets.Item;
9
- import static com.infochimps.vayacondios.ItemSets.ItemSet;
10
- import com.infochimps.vayacondios.ItemSets;
11
-
12
- import java.io.IOException;
13
- import java.util.Arrays;
14
- import java.util.ArrayList;
15
- import java.util.Iterator;
16
- import java.util.List;
17
-
18
- import static org.junit.Assert.assertEquals;
19
- import org.junit.After;
20
- import org.junit.Before;
21
- import org.junit.Test;
22
- import org.junit.Ignore;
23
- import org.junit.runner.RunWith;
24
- import org.junit.runners.JUnit4;
25
-
26
- import org.slf4j.Logger;
27
-
28
- @RunWith(JUnit4.class)
29
- public class TestVayacondiosInMemory {
30
- @Before
31
- public void setup() {
32
- _itemSets = new VayacondiosClient("localhost", VCD_PORT).
33
- organization("org").
34
- itemsets(new MemoryVCDShim());
35
- }
36
-
37
- @Test
38
- public void testInMemVCD() throws Exception {
39
- create("foo", "baz", "bar", "bing");
40
- assertEquals(buildItemList("foo", "baz", "bar", "bing"), fetch());
41
-
42
- update("biff");
43
- assertEquals(buildItemList("foo", "baz", "bar", "bing", "biff"), fetch());
44
-
45
- remove("biff", "bar");
46
- assertEquals(buildItemList("foo", "baz", "bing"), fetch());
47
- }
48
-
49
- private ItemSets itemSets() {
50
- return _itemSets;
51
- }
52
-
53
- private static List<Item> buildItemList(String... itemNames) {
54
- List<Item> result = new ArrayList<Item>();
55
- for (String s : itemNames) result.add(new Item(s));
56
- return result;
57
- }
58
-
59
- private List<Item> fetch() throws IOException {
60
- return itemSets().fetch("topic", "id");
61
- }
62
-
63
- private void create(String... items) throws IOException {
64
- itemSets().create("topic", "id", buildItemList(items));
65
- }
66
-
67
- private void remove(String... items) throws IOException {
68
- itemSets().remove("topic", "id", buildItemList(items));
69
- }
70
-
71
- private void update(String... items) throws IOException {
72
- itemSets().update("topic", "id", buildItemList(items));
73
- }
74
-
75
- private static final int VCD_PORT = 8000;
76
- private static final Logger LOG = getLogger();
77
- private ItemSets _itemSets;
78
- }
@@ -1,25 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- $:.push File.expand_path('../lib', __FILE__)
4
- require 'vayacondios/version'
5
-
6
- Gem::Specification.new do |gem|
7
- gem.name = 'vayacondios-client'
8
- gem.version = Vayacondios::VERSION
9
- gem.authors = ['Philip (flip) Kromer', 'Travis Dempsey', 'Huston Hoburg', 'Logan Lowell']
10
- gem.homepage = 'https://github.com/infochimps-labs/vayacondios'
11
- gem.summary = 'Data goes in. The right thing happens'
12
- gem.description = "Simple enough to use in a shell script, performant enough to use everywhere. Dios mío! Record that metric, ese!"
13
-
14
- gem.files = `git ls-files -- lib | grep client`.split("\n")
15
- gem.test_files = `git ls-files -- spec | grep client`.split("\n")
16
- gem.require_paths = ['lib']
17
-
18
- gem.add_dependency('configliere', '>= 0.4.16')
19
- gem.add_dependency('multi_json', '>= 1.3.6')
20
- gem.add_dependency('gorillib', '>= 0.4.2')
21
-
22
- gem.add_development_dependency('rake')
23
- gem.add_development_dependency('yard', '>= 0.7')
24
- gem.add_development_dependency('rspec', '>= 2.8')
25
- end