gaffel 0.0.0 → 0.0.3

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/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ .idea
data/.idea/gaffel.iml ADDED
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="RUBY_MODULE" version="4">
3
+ <component name="NewModuleRootManager">
4
+ <content url="file://$MODULE_DIR$" />
5
+ <orderEntry type="inheritedJdk" />
6
+ <orderEntry type="sourceFolder" forTests="false" />
7
+ <orderEntry type="library" scope="PROVIDED" name="active_support (v3.0.0, RVM: ree-1.8.7-2012.01) [gem]" level="application" />
8
+ <orderEntry type="library" scope="PROVIDED" name="activesupport (v3.0.0, RVM: ree-1.8.7-2012.01) [gem]" level="application" />
9
+ <orderEntry type="library" scope="PROVIDED" name="bundler (v1.0.22, RVM: ree-1.8.7-2012.01) [gem]" level="application" />
10
+ </component>
11
+ </module>
12
+
data/.idea/misc.xml ADDED
@@ -0,0 +1,30 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectInspectionProfilesVisibleTreeState">
4
+ <entry key="Project Default">
5
+ <profile-state>
6
+ <expanded-state>
7
+ <State>
8
+ <id />
9
+ </State>
10
+ <State>
11
+ <id>Control flow issuesJavaScript</id>
12
+ </State>
13
+ <State>
14
+ <id>JavaScript</id>
15
+ </State>
16
+ </expanded-state>
17
+ <selected-state>
18
+ <State>
19
+ <id>NestedSwitchStatementJS</id>
20
+ </State>
21
+ </selected-state>
22
+ </profile-state>
23
+ </entry>
24
+ </component>
25
+ <component name="ProjectResources">
26
+ <default-html-doctype>http://www.w3.org/1999/xhtml</default-html-doctype>
27
+ </component>
28
+ <component name="ProjectRootManager" version="2" project-jdk-name="RVM: ree-1.8.7-2012.01" project-jdk-type="RUBY_SDK" />
29
+ </project>
30
+
@@ -0,0 +1,5 @@
1
+ <component name="DependencyValidationManager">
2
+ <state>
3
+ <option name="SKIP_IMPORT_STATEMENTS" value="false" />
4
+ </state>
5
+ </component>
data/.idea/vcs.xml ADDED
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="" vcs="" />
5
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
6
+ </component>
7
+ </project>
8
+
@@ -0,0 +1,534 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ChangeListManager">
4
+ <list default="true" id="a6eb8ab3-4a3f-429d-926c-0a18c72b45d4" name="Default" comment="">
5
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/gaffel.iml" />
6
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/misc.xml" />
7
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/scopes/scope_settings.xml" />
8
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/vcs.xml" />
9
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
10
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Gemfile" />
11
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Rakefile" />
12
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/lib/gaffel/version.rb" />
13
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.gitignore" afterPath="$PROJECT_DIR$/.gitignore" />
14
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/gaffel.gemspec" afterPath="$PROJECT_DIR$/gaffel.gemspec" />
15
+ </list>
16
+ <ignored path="gaffel.iws" />
17
+ <ignored path=".idea/workspace.xml" />
18
+ <option name="TRACKING_ENABLED" value="true" />
19
+ <option name="SHOW_DIALOG" value="false" />
20
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
21
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
22
+ <option name="LAST_RESOLUTION" value="IGNORE" />
23
+ </component>
24
+ <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
25
+ <component name="CreatePatchCommitExecutor">
26
+ <option name="PATCH_PATH" value="" />
27
+ </component>
28
+ <component name="DaemonCodeAnalyzer">
29
+ <disable_hints />
30
+ </component>
31
+ <component name="FileEditorManager">
32
+ <leaf>
33
+ <file leaf-file-name="gaffel.rb" pinned="false" current="false" current-in-tab="false">
34
+ <entry file="file://$PROJECT_DIR$/lib/gaffel.rb">
35
+ <provider selected="true" editor-type-id="text-editor">
36
+ <state line="16" column="65" selection-start="752" selection-end="782" vertical-scroll-proportion="0.0">
37
+ <folding />
38
+ </state>
39
+ </provider>
40
+ </entry>
41
+ </file>
42
+ <file leaf-file-name="gaffel_spec.rb" pinned="false" current="false" current-in-tab="false">
43
+ <entry file="file://$PROJECT_DIR$/integration/gaffel_spec.rb">
44
+ <provider selected="true" editor-type-id="text-editor">
45
+ <state line="25" column="0" selection-start="982" selection-end="982" vertical-scroll-proportion="0.0">
46
+ <folding />
47
+ </state>
48
+ </provider>
49
+ </entry>
50
+ </file>
51
+ <file leaf-file-name="version.rb" pinned="false" current="false" current-in-tab="false">
52
+ <entry file="file://$PROJECT_DIR$/lib/gaffel/version.rb">
53
+ <provider selected="true" editor-type-id="text-editor">
54
+ <state line="2" column="3" selection-start="37" selection-end="37" vertical-scroll-proportion="0.0">
55
+ <folding />
56
+ </state>
57
+ </provider>
58
+ </entry>
59
+ </file>
60
+ <file leaf-file-name="gaffel_spec.rb" pinned="false" current="false" current-in-tab="false">
61
+ <entry file="file://$PROJECT_DIR$/spec/gaffel_spec.rb">
62
+ <provider selected="true" editor-type-id="text-editor">
63
+ <state line="30" column="30" selection-start="1411" selection-end="1452" vertical-scroll-proportion="0.0">
64
+ <folding />
65
+ </state>
66
+ </provider>
67
+ </entry>
68
+ </file>
69
+ <file leaf-file-name=".gitignore" pinned="false" current="false" current-in-tab="false">
70
+ <entry file="file://$PROJECT_DIR$/.gitignore">
71
+ <provider selected="true" editor-type-id="text-editor">
72
+ <state line="5" column="0" selection-start="39" selection-end="39" vertical-scroll-proportion="0.0">
73
+ <folding />
74
+ </state>
75
+ </provider>
76
+ </entry>
77
+ </file>
78
+ <file leaf-file-name="gaffel.gemspec" pinned="false" current="false" current-in-tab="false">
79
+ <entry file="file://$PROJECT_DIR$/gaffel.gemspec">
80
+ <provider selected="true" editor-type-id="text-editor">
81
+ <state line="9" column="0" selection-start="267" selection-end="267" vertical-scroll-proportion="0.0">
82
+ <folding />
83
+ </state>
84
+ </provider>
85
+ </entry>
86
+ </file>
87
+ <file leaf-file-name="Gemfile" pinned="false" current="false" current-in-tab="false">
88
+ <entry file="file://$PROJECT_DIR$/Gemfile">
89
+ <provider selected="true" editor-type-id="text-editor">
90
+ <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
91
+ <folding />
92
+ </state>
93
+ </provider>
94
+ </entry>
95
+ </file>
96
+ <file leaf-file-name="Gemfile.lock" pinned="false" current="false" current-in-tab="false">
97
+ <entry file="file://$PROJECT_DIR$/Gemfile.lock">
98
+ <provider selected="true" editor-type-id="text-editor">
99
+ <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
100
+ <folding />
101
+ </state>
102
+ </provider>
103
+ </entry>
104
+ </file>
105
+ <file leaf-file-name="README.md" pinned="false" current="true" current-in-tab="true">
106
+ <entry file="file://$PROJECT_DIR$/README.md">
107
+ <provider selected="true" editor-type-id="text-editor">
108
+ <state line="3" column="10" selection-start="25" selection-end="25" vertical-scroll-proportion="0.05">
109
+ <folding />
110
+ </state>
111
+ </provider>
112
+ </entry>
113
+ </file>
114
+ </leaf>
115
+ </component>
116
+ <component name="FindManager">
117
+ <FindUsagesManager>
118
+ <setting name="OPEN_NEW_TAB" value="false" />
119
+ </FindUsagesManager>
120
+ </component>
121
+ <component name="Git.Settings">
122
+ <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
123
+ </component>
124
+ <component name="IdeDocumentHistory">
125
+ <option name="changedFiles">
126
+ <list>
127
+ <option value="$PROJECT_DIR$/Gemfile" />
128
+ <option value="$PROJECT_DIR$/lib/gaffel.rb" />
129
+ <option value="$PROJECT_DIR$/spec/spec_helper.rb" />
130
+ <option value="$PROJECT_DIR$/spec/gaffel_spec.rb" />
131
+ <option value="$PROJECT_DIR$/integration/gaffel_spec.rb" />
132
+ <option value="$PROJECT_DIR$/gaffel/lib/gaffel/version.rb" />
133
+ <option value="$PROJECT_DIR$/lib/gaffel/version.rb" />
134
+ <option value="$PROJECT_DIR$/.gitignore" />
135
+ <option value="$PROJECT_DIR$/gaffel.gemspec" />
136
+ </list>
137
+ </option>
138
+ </component>
139
+ <component name="ProjectFrameBounds">
140
+ <option name="y" value="22" />
141
+ <option name="width" value="1680" />
142
+ <option name="height" value="1024" />
143
+ </component>
144
+ <component name="ProjectLevelVcsManager" settingsEditedManually="true">
145
+ <OptionsSetting value="true" id="Add" />
146
+ <OptionsSetting value="true" id="Remove" />
147
+ <OptionsSetting value="true" id="Checkout" />
148
+ <OptionsSetting value="true" id="Update" />
149
+ <OptionsSetting value="true" id="Status" />
150
+ <OptionsSetting value="true" id="Edit" />
151
+ <ConfirmationsSetting value="2" id="Add" />
152
+ <ConfirmationsSetting value="0" id="Remove" />
153
+ </component>
154
+ <component name="ProjectReloadState">
155
+ <option name="STATE" value="0" />
156
+ </component>
157
+ <component name="ProjectView">
158
+ <navigator currentView="ProjectPane" proportions="" version="1" splitterProportion="0.5">
159
+ <flattenPackages />
160
+ <showMembers />
161
+ <showModules />
162
+ <showLibraryContents />
163
+ <hideEmptyPackages />
164
+ <abbreviatePackageNames />
165
+ <autoscrollToSource ProjectPane="true" />
166
+ <autoscrollFromSource ProjectPane="true" />
167
+ <sortByType />
168
+ </navigator>
169
+ <panes>
170
+ <pane id="ProjectPane">
171
+ <subPane>
172
+ <PATH>
173
+ <PATH_ELEMENT>
174
+ <option name="myItemId" value="gaffel" />
175
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
176
+ </PATH_ELEMENT>
177
+ </PATH>
178
+ <PATH>
179
+ <PATH_ELEMENT>
180
+ <option name="myItemId" value="gaffel" />
181
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
182
+ </PATH_ELEMENT>
183
+ <PATH_ELEMENT>
184
+ <option name="myItemId" value="gaffel" />
185
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
186
+ </PATH_ELEMENT>
187
+ </PATH>
188
+ <PATH>
189
+ <PATH_ELEMENT>
190
+ <option name="myItemId" value="gaffel" />
191
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
192
+ </PATH_ELEMENT>
193
+ <PATH_ELEMENT>
194
+ <option name="myItemId" value="gaffel" />
195
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
196
+ </PATH_ELEMENT>
197
+ <PATH_ELEMENT>
198
+ <option name="myItemId" value="spec" />
199
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
200
+ </PATH_ELEMENT>
201
+ </PATH>
202
+ <PATH>
203
+ <PATH_ELEMENT>
204
+ <option name="myItemId" value="gaffel" />
205
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
206
+ </PATH_ELEMENT>
207
+ <PATH_ELEMENT>
208
+ <option name="myItemId" value="gaffel" />
209
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
210
+ </PATH_ELEMENT>
211
+ <PATH_ELEMENT>
212
+ <option name="myItemId" value="lib" />
213
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
214
+ </PATH_ELEMENT>
215
+ </PATH>
216
+ <PATH>
217
+ <PATH_ELEMENT>
218
+ <option name="myItemId" value="gaffel" />
219
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
220
+ </PATH_ELEMENT>
221
+ <PATH_ELEMENT>
222
+ <option name="myItemId" value="gaffel" />
223
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
224
+ </PATH_ELEMENT>
225
+ <PATH_ELEMENT>
226
+ <option name="myItemId" value="lib" />
227
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
228
+ </PATH_ELEMENT>
229
+ <PATH_ELEMENT>
230
+ <option name="myItemId" value="gaffel" />
231
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
232
+ </PATH_ELEMENT>
233
+ </PATH>
234
+ <PATH>
235
+ <PATH_ELEMENT>
236
+ <option name="myItemId" value="gaffel" />
237
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
238
+ </PATH_ELEMENT>
239
+ <PATH_ELEMENT>
240
+ <option name="myItemId" value="gaffel" />
241
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
242
+ </PATH_ELEMENT>
243
+ <PATH_ELEMENT>
244
+ <option name="myItemId" value="integration" />
245
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
246
+ </PATH_ELEMENT>
247
+ </PATH>
248
+ </subPane>
249
+ </pane>
250
+ <pane id="Scope" />
251
+ </panes>
252
+ </component>
253
+ <component name="PropertiesComponent">
254
+ <property name="options.splitter.main.proportions" value="0.3" />
255
+ <property name="WebServerToolWindowFactoryState" value="false" />
256
+ <property name="options.lastSelected" value="project.propVCSSupport.Mappings" />
257
+ <property name="last_opened_file_path" value="$PROJECT_DIR$" />
258
+ <property name="options.splitter.details.proportions" value="0.2" />
259
+ <property name="options.searchVisible" value="true" />
260
+ </component>
261
+ <component name="RunManager">
262
+ <configuration default="true" type="RSpecRunConfigurationType" factoryName="RSpec">
263
+ <predefined_log_file id="RUBY_RSPEC" enabled="true" />
264
+ <module name="" />
265
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
266
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="" />
267
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
268
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
269
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
270
+ <envs />
271
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
272
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
273
+ <COVERAGE_PATTERN ENABLED="true">
274
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
275
+ </COVERAGE_PATTERN>
276
+ </EXTENSION>
277
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
278
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="" />
279
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
280
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*_spec.rb" />
281
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="" />
282
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
283
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
284
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
285
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_SPEC_RUNNER" VALUE="false" />
286
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
287
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
288
+ <method />
289
+ </configuration>
290
+ <configuration default="true" type="RubyRunConfigurationType" factoryName="Ruby">
291
+ <module name="" />
292
+ <RUBY_RUN_CONFIG NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
293
+ <RUBY_RUN_CONFIG NAME="WORK DIR" VALUE="" />
294
+ <RUBY_RUN_CONFIG NAME="SHOULD_USE_SDK" VALUE="false" />
295
+ <RUBY_RUN_CONFIG NAME="ALTERN_SDK_NAME" VALUE="" />
296
+ <RUBY_RUN_CONFIG NAME="myPassParentEnvs" VALUE="true" />
297
+ <envs />
298
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
299
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
300
+ <COVERAGE_PATTERN ENABLED="true">
301
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
302
+ </COVERAGE_PATTERN>
303
+ </EXTENSION>
304
+ <RUBY_RUN_CONFIG NAME="SCRIPT_PATH" VALUE="" />
305
+ <RUBY_RUN_CONFIG NAME="SCRIPT_ARGS" VALUE="" />
306
+ <method />
307
+ </configuration>
308
+ <configuration default="true" type="TestUnitRunConfigurationType" factoryName="Test::Unit/Shoulda/Minitest">
309
+ <predefined_log_file id="RUBY_TESTUNIT" enabled="true" />
310
+ <module name="" />
311
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
312
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="" />
313
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
314
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
315
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
316
+ <envs />
317
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
318
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
319
+ <COVERAGE_PATTERN ENABLED="true">
320
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
321
+ </COVERAGE_PATTERN>
322
+ </EXTENSION>
323
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
324
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="" />
325
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="" />
326
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_METHOD_NAME" VALUE="" />
327
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
328
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
329
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_OPTIONS" VALUE="" />
330
+ <method />
331
+ </configuration>
332
+ <configuration default="true" type="CucumberRunConfigurationType" factoryName="Cucumber">
333
+ <predefined_log_file id="RUBY_CUCUMBER" enabled="true" />
334
+ <module name="" />
335
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
336
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="" />
337
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
338
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
339
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
340
+ <envs>
341
+ <env name="ANSICON" value="" />
342
+ </envs>
343
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
344
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
345
+ <COVERAGE_PATTERN ENABLED="true">
346
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
347
+ </COVERAGE_PATTERN>
348
+ </EXTENSION>
349
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*.feature" />
350
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
351
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
352
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="" />
353
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_TAGS_FILTER" VALUE="" />
354
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_NAME_FILTER" VALUE="" />
355
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="CUCUMBER_ARGS" VALUE="--color -r features" />
356
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
357
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
358
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="VERBOSE_OPTION" VALUE="false" />
359
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
360
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="CUCUMBER_RUNNER_PATH" VALUE="" />
361
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_RUNNER" VALUE="false" />
362
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="SETTINGS_VERSION" VALUE="2" />
363
+ <method />
364
+ </configuration>
365
+ <list size="0" />
366
+ </component>
367
+ <component name="ShelveChangesManager" show_recycled="false" />
368
+ <component name="SvnConfiguration" maxAnnotateRevisions="500" myUseAcceleration="nothing" myAutoUpdateAfterCommit="false" cleanupOnStartRun="false">
369
+ <option name="USER" value="" />
370
+ <option name="PASSWORD" value="" />
371
+ <option name="mySSHConnectionTimeout" value="30000" />
372
+ <option name="mySSHReadTimeout" value="30000" />
373
+ <option name="LAST_MERGED_REVISION" />
374
+ <option name="MERGE_DRY_RUN" value="false" />
375
+ <option name="MERGE_DIFF_USE_ANCESTRY" value="true" />
376
+ <option name="UPDATE_LOCK_ON_DEMAND" value="false" />
377
+ <option name="IGNORE_SPACES_IN_MERGE" value="false" />
378
+ <option name="DETECT_NESTED_COPIES" value="true" />
379
+ <option name="CHECK_NESTED_FOR_QUICK_MERGE" value="false" />
380
+ <option name="IGNORE_SPACES_IN_ANNOTATE" value="true" />
381
+ <option name="SHOW_MERGE_SOURCES_IN_ANNOTATE" value="true" />
382
+ <option name="FORCE_UPDATE" value="false" />
383
+ <option name="IGNORE_EXTERNALS" value="false" />
384
+ <myIsUseDefaultProxy>false</myIsUseDefaultProxy>
385
+ </component>
386
+ <component name="TaskManager">
387
+ <task active="true" id="Default" summary="Default task">
388
+ <created>1344607465681</created>
389
+ <updated>1344607465681</updated>
390
+ </task>
391
+ <servers />
392
+ </component>
393
+ <component name="ToolWindowManager">
394
+ <frame x="0" y="22" width="1680" height="1024" extended-state="6" />
395
+ <editor active="false" />
396
+ <layout>
397
+ <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
398
+ <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
399
+ <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32901832" sideWeight="0.497552" order="1" side_tool="false" content_ui="tabs" />
400
+ <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
401
+ <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="true" content_ui="tabs" />
402
+ <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.124847" sideWeight="0.67098165" order="0" side_tool="false" content_ui="combo" />
403
+ <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
404
+ <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
405
+ <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32901832" sideWeight="0.49816403" order="-1" side_tool="true" content_ui="tabs" />
406
+ <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32901832" sideWeight="0.497552" order="2" side_tool="false" content_ui="tabs" />
407
+ <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
408
+ <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
409
+ <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
410
+ <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
411
+ <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
412
+ <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
413
+ <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
414
+ </layout>
415
+ </component>
416
+ <component name="VcsContentAnnotationSettings">
417
+ <option name="myLimit" value="2678400000" />
418
+ </component>
419
+ <component name="VcsManagerConfiguration">
420
+ <option name="OFFER_MOVE_TO_ANOTHER_CHANGELIST_ON_PARTIAL_COMMIT" value="true" />
421
+ <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="true" />
422
+ <option name="CHECK_NEW_TODO" value="true" />
423
+ <option name="myTodoPanelSettings">
424
+ <value>
425
+ <are-packages-shown value="false" />
426
+ <are-modules-shown value="false" />
427
+ <flatten-packages value="false" />
428
+ <is-autoscroll-to-source value="false" />
429
+ </value>
430
+ </option>
431
+ <option name="PERFORM_UPDATE_IN_BACKGROUND" value="true" />
432
+ <option name="PERFORM_COMMIT_IN_BACKGROUND" value="true" />
433
+ <option name="PERFORM_EDIT_IN_BACKGROUND" value="true" />
434
+ <option name="PERFORM_CHECKOUT_IN_BACKGROUND" value="true" />
435
+ <option name="PERFORM_ADD_REMOVE_IN_BACKGROUND" value="true" />
436
+ <option name="PERFORM_ROLLBACK_IN_BACKGROUND" value="false" />
437
+ <option name="CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND" value="false" />
438
+ <option name="CHANGED_ON_SERVER_INTERVAL" value="60" />
439
+ <option name="SHOW_ONLY_CHANGED_IN_SELECTION_DIFF" value="true" />
440
+ <option name="CHECK_COMMIT_MESSAGE_SPELLING" value="true" />
441
+ <option name="DEFAULT_PATCH_EXTENSION" value="patch" />
442
+ <option name="SHORT_DIFF_HORISONTALLY" value="true" />
443
+ <option name="SHORT_DIFF_EXTRA_LINES" value="2" />
444
+ <option name="SOFT_WRAPS_IN_SHORT_DIFF" value="true" />
445
+ <option name="INCLUDE_TEXT_INTO_PATCH" value="false" />
446
+ <option name="INCLUDE_TEXT_INTO_SHELF" value="false" />
447
+ <option name="SHOW_FILE_HISTORY_DETAILS" value="true" />
448
+ <option name="SHOW_VCS_ERROR_NOTIFICATIONS" value="true" />
449
+ <option name="FORCE_NON_EMPTY_COMMENT" value="false" />
450
+ <option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="false" />
451
+ <option name="LAST_COMMIT_MESSAGE" />
452
+ <option name="MAKE_NEW_CHANGELIST_ACTIVE" value="false" />
453
+ <option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false" />
454
+ <option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
455
+ <option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="false" />
456
+ <option name="REFORMAT_BEFORE_FILE_COMMIT" value="false" />
457
+ <option name="FILE_HISTORY_DIALOG_COMMENTS_SPLITTER_PROPORTION" value="0.8" />
458
+ <option name="FILE_HISTORY_DIALOG_SPLITTER_PROPORTION" value="0.5" />
459
+ <option name="ACTIVE_VCS_NAME" />
460
+ <option name="UPDATE_GROUP_BY_PACKAGES" value="false" />
461
+ <option name="UPDATE_GROUP_BY_CHANGELIST" value="false" />
462
+ <option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
463
+ <option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
464
+ </component>
465
+ <component name="XDebuggerManager">
466
+ <breakpoint-manager />
467
+ </component>
468
+ <component name="editorHistoryManager">
469
+ <entry file="file://$PROJECT_DIR$/integration/gaffel_spec.rb">
470
+ <provider selected="true" editor-type-id="text-editor">
471
+ <state line="25" column="0" selection-start="982" selection-end="982" vertical-scroll-proportion="0.0">
472
+ <folding />
473
+ </state>
474
+ </provider>
475
+ </entry>
476
+ <entry file="file://$PROJECT_DIR$/lib/gaffel/version.rb">
477
+ <provider selected="true" editor-type-id="text-editor">
478
+ <state line="2" column="3" selection-start="37" selection-end="37" vertical-scroll-proportion="0.0">
479
+ <folding />
480
+ </state>
481
+ </provider>
482
+ </entry>
483
+ <entry file="file://$PROJECT_DIR$/lib/gaffel.rb">
484
+ <provider selected="true" editor-type-id="text-editor">
485
+ <state line="16" column="65" selection-start="752" selection-end="782" vertical-scroll-proportion="0.0">
486
+ <folding />
487
+ </state>
488
+ </provider>
489
+ </entry>
490
+ <entry file="file://$PROJECT_DIR$/spec/gaffel_spec.rb">
491
+ <provider selected="true" editor-type-id="text-editor">
492
+ <state line="30" column="30" selection-start="1411" selection-end="1452" vertical-scroll-proportion="0.0">
493
+ <folding />
494
+ </state>
495
+ </provider>
496
+ </entry>
497
+ <entry file="file://$PROJECT_DIR$/.gitignore">
498
+ <provider selected="true" editor-type-id="text-editor">
499
+ <state line="5" column="0" selection-start="39" selection-end="39" vertical-scroll-proportion="0.0">
500
+ <folding />
501
+ </state>
502
+ </provider>
503
+ </entry>
504
+ <entry file="file://$PROJECT_DIR$/gaffel.gemspec">
505
+ <provider selected="true" editor-type-id="text-editor">
506
+ <state line="9" column="0" selection-start="267" selection-end="267" vertical-scroll-proportion="0.0">
507
+ <folding />
508
+ </state>
509
+ </provider>
510
+ </entry>
511
+ <entry file="file://$PROJECT_DIR$/Gemfile.lock">
512
+ <provider selected="true" editor-type-id="text-editor">
513
+ <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
514
+ <folding />
515
+ </state>
516
+ </provider>
517
+ </entry>
518
+ <entry file="file://$PROJECT_DIR$/Gemfile">
519
+ <provider selected="true" editor-type-id="text-editor">
520
+ <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
521
+ <folding />
522
+ </state>
523
+ </provider>
524
+ </entry>
525
+ <entry file="file://$PROJECT_DIR$/README.md">
526
+ <provider selected="true" editor-type-id="text-editor">
527
+ <state line="3" column="10" selection-start="25" selection-end="25" vertical-scroll-proportion="0.05">
528
+ <folding />
529
+ </state>
530
+ </provider>
531
+ </entry>
532
+ </component>
533
+ </project>
534
+
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in gaffel.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,4 @@
1
+ gaffel
2
+ ======
3
+
4
+ Extract data from Google Analytics (GA) v3.0 API
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/gaffel-0.0.0.gem ADDED
Binary file
data/gaffel.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "gaffel/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "gaffel"
7
+ s.version = Gaffel::VERSION
8
+ s.authors = ["Tilmann Bruckhaus"]
9
+ s.email = 'tilmann@bruckha.us'
10
+ s.homepage = 'http://rubygems.org/gems/gaffel'
11
+ s.summary = %q{Extract data from Google Analytics (GA) v3.0 API}
12
+ s.description = %q{Supports extracting 1 metric for 0 or more dimensions, with start and end dates,
13
+ sorting, and max results requested per Google API call. Provides results record-by-record via an iterator.}
14
+
15
+ s.rubyforge_project = "gaffel"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ # specify any dependencies here; for example:
23
+ # s.add_development_dependency "rspec"
24
+ # s.add_runtime_dependency "rest-client"
25
+ end
@@ -0,0 +1,33 @@
1
+ require 'gaffel'
2
+
3
+ describe "GoogleAnalyticsApi" do
4
+
5
+ before do
6
+ @google_account = {# --- registration:
7
+ :google_api_key => '***************************************',
8
+ :ga_profile_id => 'ga:12345678',
9
+ :ga_property_id => 'xx-00000-00',
10
+ # --- login:
11
+ :login => 'anonymous@anon.com',
12
+ :password => '********',
13
+ :source => 'gaffel'}
14
+ @data_spec = {:metric => '',
15
+ :dimensions => [],
16
+ :start_date => 20120811,
17
+ :end_date => 20120811}
18
+ @ga_api = Gaffel.new(@google_account, @data_spec)
19
+ @ga_api.instance_variable_set(:@debug, true)
20
+ @ga_api = Gaffel.new(@google_account, @data_spec)
21
+ end
22
+
23
+ describe "http_get_request" do
24
+ it "should generate a valid response" do
25
+ url = @ga_api.send :make_url, 123
26
+ @ga_api.send :get_auth_token
27
+ response = (@ga_api.send :http_get_request, url)
28
+ response.should_not be_nil
29
+ response.code.to_i.should == 200
30
+ end
31
+ end
32
+
33
+ end
@@ -0,0 +1,3 @@
1
+ module Gaffel
2
+ VERSION = "0.0.3"
3
+ end
data/lib/gaffel.rb CHANGED
@@ -1,4 +1,8 @@
1
+ require 'active_support/core_ext/object'
2
+ require 'net/http'
3
+
1
4
  #noinspection RubyStringKeysInHashInspection
5
+
2
6
  class Gaffel
3
7
  # --- login:
4
8
  CLIENT_LOGIN_URL = 'https://www.google.com/accounts/ClientLogin'
@@ -27,7 +31,7 @@ class Gaffel
27
31
  :Passwd => @account[:password],
28
32
  :source => @account[:source],
29
33
  :accountType => ACCOUNT_TYPE,
30
- :service => SERVICE}.to_query
34
+ :service => SERVICE}.to_param
31
35
  @headers_for_get_request = {"GData-Version" => '2',
32
36
  "Content-Type" => CONTENT_TYPE}
33
37
  @rows_processed = 0
@@ -91,7 +95,7 @@ class Gaffel
91
95
  "end-date" => @data_spec[:end_date],
92
96
  "sort" => @data_spec[:sort],
93
97
  "key" => @account[:google_api_key],
94
- "ids" => @account[:ga_profile_id]}.to_query
98
+ "ids" => @account[:ga_profile_id]}.to_param
95
99
  #debug("query", query)
96
100
  URI GA_CORE_REPORTING_API_URL + '?' + query
97
101
  end
@@ -0,0 +1,42 @@
1
+ require 'gaffel'
2
+
3
+ describe "GoogleAnalyticsApi" do
4
+ before do
5
+ @google_account = {# --- registration:
6
+ :google_api_key => '***************************************',
7
+ :ga_profile_id => 'ga:12345678',
8
+ :ga_property_id => 'xx-00000-00',
9
+ # --- login:
10
+ :login => 'anonymous@anon.org',
11
+ :password => '********',
12
+ :source => 'gaffel'}
13
+ @data_spec = {:metric => '',
14
+ :dimensions => [],
15
+ :start_date => 20120811,
16
+ :end_date => 20120811}
17
+ @ga_api = Gaffel.new(@google_account, @data_spec)
18
+ end
19
+
20
+ it "should initialize request headers with authorization, version, and content type" do
21
+ @ga_api.instance_variable_set(:@debug, true)
22
+ EXPECTED_AUTH = /^GoogleLogin Auth=/
23
+ EXPECTED_TYPE = "application/x-www-form-urlencoded"
24
+ @ga_api.instance_variable_get("@headers_for_get_request").should_not be_nil
25
+ @ga_api.instance_variable_get("@headers_for_get_request")["GData-Version"].should == "2"
26
+ @ga_api.instance_variable_get("@headers_for_get_request")["Content-Type"].should == EXPECTED_TYPE
27
+ end
28
+
29
+ describe "make_url" do
30
+ it "should generate a get request URL for obtaining a number of results, beginning from start index" do
31
+ url = @ga_api.send :make_url, 1234
32
+ url.should_not be_nil
33
+ url = url.to_s
34
+ url.should match /https:\/\//
35
+ url.should match /end-date=/
36
+ url.should match /start-date=/
37
+ url.should match /max-results=/
38
+ url.should match /start-index=/
39
+ end
40
+ end
41
+
42
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gaffel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,17 +9,31 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-10 00:00:00.000000000Z
12
+ date: 2012-08-11 00:00:00.000000000Z
13
13
  dependencies: []
14
- description: Supports extracting 1 metric for 0 or more dimensions, with start and
15
- end dates, sorting, and max results requested per Google API call. Provides results
16
- record-by-record via an iterator.
14
+ description: ! "Supports extracting 1 metric for 0 or more dimensions, with start
15
+ and end dates,\n sorting, and max results requested per Google API call. Provides
16
+ results record-by-record via an iterator."
17
17
  email: tilmann@bruckha.us
18
18
  executables: []
19
19
  extensions: []
20
20
  extra_rdoc_files: []
21
21
  files:
22
+ - .gitignore
23
+ - .idea/gaffel.iml
24
+ - .idea/misc.xml
25
+ - .idea/scopes/scope_settings.xml
26
+ - .idea/vcs.xml
27
+ - .idea/workspace.xml
28
+ - Gemfile
29
+ - README.md
30
+ - Rakefile
31
+ - gaffel-0.0.0.gem
32
+ - gaffel.gemspec
33
+ - integration/gaffel_spec.rb
22
34
  - lib/gaffel.rb
35
+ - lib/gaffel/version.rb
36
+ - spec/gaffel_spec.rb
23
37
  homepage: http://rubygems.org/gems/gaffel
24
38
  licenses: []
25
39
  post_install_message:
@@ -39,9 +53,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  requirements: []
42
- rubyforge_project:
56
+ rubyforge_project: gaffel
43
57
  rubygems_version: 1.8.15
44
58
  signing_key:
45
59
  specification_version: 3
46
- summary: Extract data from Google Analytics (GA) v3.0 API!
47
- test_files: []
60
+ summary: Extract data from Google Analytics (GA) v3.0 API
61
+ test_files:
62
+ - spec/gaffel_spec.rb