pg_cache_key 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c8c8889a9eb692f03886340ddfd969cf715d9d6c
4
+ data.tar.gz: 8dbb34f0e7bb48e5512c715879a5c7cb2b785f04
5
+ SHA512:
6
+ metadata.gz: a1e473e493fbb4dc940c48f1236b5aed014da81d3800c6f85dfacdd88405677f330577900b1c74cd45b271e0525f93b3ef9c58d849bff212148d612d88422f8f
7
+ data.tar.gz: fb1ed2615e9e3f789f54915cee9d9c25d4afda29c138c5d949c2993a0323514074a450c3acd4d3f4da232356af631a73c232324a57ecabaea53efac34040e096
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ /.idea/
2
+ /.bundle/
3
+ /.yardoc
4
+ /Gemfile.lock
5
+ /_yardoc/
6
+ /coverage/
7
+ /doc/
8
+ /pkg/
9
+ /spec/reports/
10
+ /tmp/
data/.idea/.name ADDED
@@ -0,0 +1 @@
1
+ pg_cache_key
data/.idea/misc.xml ADDED
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectLevelVcsManager" settingsEditedManually="false">
4
+ <OptionsSetting value="true" id="Add" />
5
+ <OptionsSetting value="true" id="Remove" />
6
+ <OptionsSetting value="true" id="Checkout" />
7
+ <OptionsSetting value="true" id="Update" />
8
+ <OptionsSetting value="true" id="Status" />
9
+ <OptionsSetting value="true" id="Edit" />
10
+ <ConfirmationsSetting value="0" id="Add" />
11
+ <ConfirmationsSetting value="0" id="Remove" />
12
+ </component>
13
+ <component name="ProjectRootManager" version="2" project-jdk-name="RVM: ruby-2.1.4" project-jdk-type="RUBY_SDK" />
14
+ </project>
data/.idea/modules.xml ADDED
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/pg_cache_key.iml" filepath="$PROJECT_DIR$/.idea/pg_cache_key.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
@@ -0,0 +1,21 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="RUBY_MODULE" version="4">
3
+ <component name="FacetManager">
4
+ <facet type="gem" name="Ruby Gem">
5
+ <configuration>
6
+ <option name="GEM_APP_ROOT_PATH" value="$MODULE_DIR$" />
7
+ <option name="GEM_APP_TEST_PATH" value="$MODULE_DIR$/test" />
8
+ <option name="GEM_APP_LIB_PATH" value="$MODULE_DIR$/lib" />
9
+ </configuration>
10
+ </facet>
11
+ </component>
12
+ <component name="NewModuleRootManager">
13
+ <content url="file://$MODULE_DIR$">
14
+ <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
15
+ </content>
16
+ <orderEntry type="jdk" jdkName="RVM: ruby-2.3.0 [pg_cache]" jdkType="RUBY_SDK" />
17
+ <orderEntry type="sourceFolder" forTests="false" />
18
+ <orderEntry type="library" scope="PROVIDED" name="bundler (v1.13.1, RVM: ruby-2.3.0 [pg_cache]) [gem]" level="application" />
19
+ <orderEntry type="library" scope="PROVIDED" name="rake (v10.4.2, RVM: ruby-2.3.0 [pg_cache]) [gem]" level="application" />
20
+ </component>
21
+ </module>
data/.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
+ </component>
6
+ </project>
@@ -0,0 +1,397 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ChangeListManager">
4
+ <list default="true" id="38a7448e-6129-4c84-b909-dd7a34736d62" name="Default" comment="">
5
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/.name" />
6
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/misc.xml" />
7
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/modules.xml" />
8
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/pg_cache_key.iml" />
9
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/vcs.xml" />
10
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
11
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pg_cache_key.gemspec" afterPath="$PROJECT_DIR$/pg_cache_key.gemspec" />
12
+ </list>
13
+ <ignored path="pg_cache_key.iws" />
14
+ <ignored path=".idea/workspace.xml" />
15
+ <ignored path=".idea/dataSources.local.xml" />
16
+ <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
17
+ <option name="TRACKING_ENABLED" value="true" />
18
+ <option name="SHOW_DIALOG" value="false" />
19
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
20
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
21
+ <option name="LAST_RESOLUTION" value="IGNORE" />
22
+ </component>
23
+ <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
24
+ <component name="CreatePatchCommitExecutor">
25
+ <option name="PATCH_PATH" value="" />
26
+ </component>
27
+ <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
28
+ <component name="FavoritesManager">
29
+ <favorites_list name="pg_cache_key" />
30
+ </component>
31
+ <component name="FileEditorManager">
32
+ <leaf>
33
+ <file leaf-file-name="pg_cache_key.rb" pinned="false" current-in-tab="false">
34
+ <entry file="file://$PROJECT_DIR$/lib/pg_cache_key.rb">
35
+ <provider selected="true" editor-type-id="text-editor">
36
+ <state vertical-scroll-proportion="0.0">
37
+ <caret line="18" column="155" selection-start-line="18" selection-start-column="155" selection-end-line="18" selection-end-column="155" />
38
+ <folding />
39
+ </state>
40
+ </provider>
41
+ </entry>
42
+ </file>
43
+ <file leaf-file-name="version.rb" pinned="false" current-in-tab="false">
44
+ <entry file="file://$PROJECT_DIR$/lib/pg_cache_key/version.rb">
45
+ <provider selected="true" editor-type-id="text-editor">
46
+ <state vertical-scroll-proportion="0.0">
47
+ <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
48
+ <folding />
49
+ </state>
50
+ </provider>
51
+ </entry>
52
+ </file>
53
+ <file leaf-file-name="Gemfile" pinned="false" current-in-tab="false">
54
+ <entry file="file://$PROJECT_DIR$/Gemfile">
55
+ <provider selected="true" editor-type-id="text-editor">
56
+ <state vertical-scroll-proportion="0.0">
57
+ <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
58
+ <folding />
59
+ </state>
60
+ </provider>
61
+ </entry>
62
+ </file>
63
+ <file leaf-file-name="Rakefile" pinned="false" current-in-tab="false">
64
+ <entry file="file://$PROJECT_DIR$/Rakefile">
65
+ <provider selected="true" editor-type-id="text-editor">
66
+ <state vertical-scroll-proportion="0.0">
67
+ <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
68
+ <folding />
69
+ </state>
70
+ </provider>
71
+ </entry>
72
+ </file>
73
+ <file leaf-file-name="pg_cache_key.gemspec" pinned="false" current-in-tab="true">
74
+ <entry file="file://$PROJECT_DIR$/pg_cache_key.gemspec">
75
+ <provider selected="true" editor-type-id="text-editor">
76
+ <state vertical-scroll-proportion="0.25215518">
77
+ <caret line="13" column="64" selection-start-line="13" selection-start-column="64" selection-end-line="13" selection-end-column="64" />
78
+ <folding />
79
+ </state>
80
+ </provider>
81
+ </entry>
82
+ </file>
83
+ <file leaf-file-name="README.md" pinned="false" current-in-tab="false">
84
+ <entry file="file://$PROJECT_DIR$/README.md">
85
+ <provider selected="true" editor-type-id="split-provider[text-editor;MultiMarkdownPreviewEditor]">
86
+ <state split_layout="FIRST">
87
+ <first_editor vertical-scroll-proportion="0.31802526">
88
+ <caret line="38" column="0" selection-start-line="38" selection-start-column="0" selection-end-line="38" selection-end-column="0" />
89
+ <folding />
90
+ </first_editor>
91
+ <second_editor />
92
+ </state>
93
+ </provider>
94
+ <provider editor-type-id="MultiMarkdownFxPreviewEditor">
95
+ <state />
96
+ </provider>
97
+ </entry>
98
+ </file>
99
+ <file leaf-file-name=".gitignore" pinned="false" current-in-tab="false">
100
+ <entry file="file://$PROJECT_DIR$/.gitignore">
101
+ <provider selected="true" editor-type-id="text-editor">
102
+ <state vertical-scroll-proportion="-0.0">
103
+ <caret line="0" column="7" selection-start-line="0" selection-start-column="7" selection-end-line="0" selection-end-column="7" />
104
+ <folding />
105
+ </state>
106
+ </provider>
107
+ </entry>
108
+ </file>
109
+ </leaf>
110
+ </component>
111
+ <component name="Git.Settings">
112
+ <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
113
+ </component>
114
+ <component name="IdeDocumentHistory">
115
+ <option name="CHANGED_PATHS">
116
+ <list>
117
+ <option value="$PROJECT_DIR$/lib/pg_cache_key.rb" />
118
+ <option value="$PROJECT_DIR$/.gitignore" />
119
+ <option value="$PROJECT_DIR$/README.md" />
120
+ <option value="$PROJECT_DIR$/pg_cache_key.gemspec" />
121
+ </list>
122
+ </option>
123
+ </component>
124
+ <component name="JsBuildToolGruntFileManager" detection-done="true" />
125
+ <component name="JsGulpfileManager">
126
+ <detection-done>true</detection-done>
127
+ </component>
128
+ <component name="NamedScopeManager">
129
+ <order />
130
+ </component>
131
+ <component name="ProjectFrameBounds">
132
+ <option name="x" value="65" />
133
+ <option name="y" value="24" />
134
+ <option name="width" value="1855" />
135
+ <option name="height" value="1056" />
136
+ </component>
137
+ <component name="ProjectLevelVcsManager" settingsEditedManually="false">
138
+ <OptionsSetting value="true" id="Add" />
139
+ <OptionsSetting value="true" id="Remove" />
140
+ <OptionsSetting value="true" id="Checkout" />
141
+ <OptionsSetting value="true" id="Update" />
142
+ <OptionsSetting value="true" id="Status" />
143
+ <OptionsSetting value="true" id="Edit" />
144
+ <ConfirmationsSetting value="0" id="Add" />
145
+ <ConfirmationsSetting value="0" id="Remove" />
146
+ </component>
147
+ <component name="ProjectView">
148
+ <navigator currentView="ProjectPane" proportions="" version="1">
149
+ <flattenPackages />
150
+ <showMembers />
151
+ <showModules />
152
+ <showLibraryContents />
153
+ <hideEmptyPackages />
154
+ <abbreviatePackageNames />
155
+ <autoscrollToSource />
156
+ <autoscrollFromSource />
157
+ <sortByType />
158
+ </navigator>
159
+ <panes>
160
+ <pane id="ProjectPane">
161
+ <subPane>
162
+ <PATH>
163
+ <PATH_ELEMENT>
164
+ <option name="myItemId" value="pg_cache_key" />
165
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
166
+ </PATH_ELEMENT>
167
+ </PATH>
168
+ <PATH>
169
+ <PATH_ELEMENT>
170
+ <option name="myItemId" value="pg_cache_key" />
171
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
172
+ </PATH_ELEMENT>
173
+ <PATH_ELEMENT>
174
+ <option name="myItemId" value="pg_cache_key" />
175
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
176
+ </PATH_ELEMENT>
177
+ </PATH>
178
+ <PATH>
179
+ <PATH_ELEMENT>
180
+ <option name="myItemId" value="pg_cache_key" />
181
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
182
+ </PATH_ELEMENT>
183
+ <PATH_ELEMENT>
184
+ <option name="myItemId" value="pg_cache_key" />
185
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
186
+ </PATH_ELEMENT>
187
+ <PATH_ELEMENT>
188
+ <option name="myItemId" value="lib" />
189
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
190
+ </PATH_ELEMENT>
191
+ </PATH>
192
+ <PATH>
193
+ <PATH_ELEMENT>
194
+ <option name="myItemId" value="pg_cache_key" />
195
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
196
+ </PATH_ELEMENT>
197
+ <PATH_ELEMENT>
198
+ <option name="myItemId" value="pg_cache_key" />
199
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
200
+ </PATH_ELEMENT>
201
+ <PATH_ELEMENT>
202
+ <option name="myItemId" value="lib" />
203
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
204
+ </PATH_ELEMENT>
205
+ <PATH_ELEMENT>
206
+ <option name="myItemId" value="pg_cache_key" />
207
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
208
+ </PATH_ELEMENT>
209
+ </PATH>
210
+ </subPane>
211
+ </pane>
212
+ <pane id="Scratches" />
213
+ <pane id="Scope" />
214
+ </panes>
215
+ </component>
216
+ <component name="PropertiesComponent">
217
+ <property name="WebServerToolWindowFactoryState" value="false" />
218
+ </component>
219
+ <component name="RunManager">
220
+ <configuration default="true" type="CucumberRunConfigurationType" factoryName="Cucumber">
221
+ <predefined_log_file id="RUBY_CUCUMBER" enabled="true" />
222
+ <module name="" />
223
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
224
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="" />
225
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
226
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
227
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
228
+ <envs />
229
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
230
+ <EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
231
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
232
+ <COVERAGE_PATTERN ENABLED="true">
233
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
234
+ </COVERAGE_PATTERN>
235
+ </EXTENSION>
236
+ <EXTENSION ID="org.jetbrains.plugins.ruby.motion.run.MotionSimulatorRunExtension" />
237
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*.feature" />
238
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
239
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
240
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="" />
241
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_TAGS_FILTER" VALUE="" />
242
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_NAME_FILTER" VALUE="" />
243
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="CUCUMBER_ARGS" VALUE="--color -r features" />
244
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
245
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
246
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="VERBOSE_OPTION" VALUE="false" />
247
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
248
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
249
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
250
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="CUCUMBER_RUNNER_PATH" VALUE="" />
251
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_RUNNER" VALUE="false" />
252
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="SETTINGS_VERSION" VALUE="2" />
253
+ <method />
254
+ </configuration>
255
+ <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
256
+ <method />
257
+ </configuration>
258
+ <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
259
+ <method />
260
+ </configuration>
261
+ </component>
262
+ <component name="ShelveChangesManager" show_recycled="false" />
263
+ <component name="SvnConfiguration">
264
+ <configuration />
265
+ </component>
266
+ <component name="TaskManager">
267
+ <task active="true" id="Default" summary="Default task">
268
+ <changelist id="38a7448e-6129-4c84-b909-dd7a34736d62" name="Default" comment="" />
269
+ <created>1474279990428</created>
270
+ <option name="number" value="Default" />
271
+ <updated>1474279990428</updated>
272
+ </task>
273
+ <task id="LOCAL-00001" summary="initial commit">
274
+ <created>1474284307762</created>
275
+ <option name="number" value="00001" />
276
+ <option name="project" value="LOCAL" />
277
+ <updated>1474284307762</updated>
278
+ </task>
279
+ <task id="LOCAL-00002" summary="initial commit">
280
+ <created>1474284383946</created>
281
+ <option name="number" value="00002" />
282
+ <option name="project" value="LOCAL" />
283
+ <updated>1474284383946</updated>
284
+ </task>
285
+ <task id="LOCAL-00003" summary="rubygems forgot">
286
+ <created>1474284631160</created>
287
+ <option name="number" value="00003" />
288
+ <option name="project" value="LOCAL" />
289
+ <updated>1474284631160</updated>
290
+ </task>
291
+ <option name="localTasksCounter" value="4" />
292
+ <servers />
293
+ </component>
294
+ <component name="ToolWindowManager">
295
+ <frame x="65" y="24" width="1855" height="1056" extended-state="6" />
296
+ <editor active="true" />
297
+ <layout>
298
+ <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.20066334" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
299
+ <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3294979" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
300
+ <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32881" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
301
+ <window_info id="Event Log" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.35102266" sideWeight="0.5002764" order="4" side_tool="false" content_ui="tabs" />
302
+ <window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
303
+ <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32946378" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
304
+ <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.38830897" sideWeight="0.4997236" order="3" side_tool="false" content_ui="tabs" />
305
+ <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3966597" sideWeight="0.4997236" order="10" side_tool="false" content_ui="tabs" />
306
+ <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.2498618" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
307
+ <window_info id="Terminal" active="false" anchor="bottom" auto_hide="true" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3810021" sideWeight="0.4997236" order="11" side_tool="false" content_ui="tabs" />
308
+ <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.45093945" sideWeight="0.4997236" order="12" side_tool="false" content_ui="tabs" />
309
+ <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="2" side_tool="true" content_ui="tabs" />
310
+ <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3294979" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
311
+ <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" />
312
+ <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="1" side_tool="false" content_ui="tabs" />
313
+ <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
314
+ <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" />
315
+ <window_info id="Thumbnails" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3294979" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
316
+ <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.2498618" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
317
+ <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.41336116" sideWeight="0.78275293" order="2" side_tool="false" content_ui="tabs" />
318
+ <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" />
319
+ </layout>
320
+ </component>
321
+ <component name="VcsContentAnnotationSettings">
322
+ <option name="myLimit" value="2678400000" />
323
+ </component>
324
+ <component name="VcsManagerConfiguration">
325
+ <MESSAGE value="initial commit" />
326
+ <MESSAGE value="rubygems forgot" />
327
+ <option name="LAST_COMMIT_MESSAGE" value="rubygems forgot" />
328
+ </component>
329
+ <component name="XDebuggerManager">
330
+ <breakpoint-manager />
331
+ <watches-manager />
332
+ </component>
333
+ <component name="editorHistoryManager">
334
+ <entry file="file://$PROJECT_DIR$/Gemfile">
335
+ <provider selected="true" editor-type-id="text-editor">
336
+ <state vertical-scroll-proportion="0.0">
337
+ <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
338
+ <folding />
339
+ </state>
340
+ </provider>
341
+ </entry>
342
+ <entry file="file://$PROJECT_DIR$/Rakefile">
343
+ <provider selected="true" editor-type-id="text-editor">
344
+ <state vertical-scroll-proportion="0.0">
345
+ <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
346
+ <folding />
347
+ </state>
348
+ </provider>
349
+ </entry>
350
+ <entry file="file://$PROJECT_DIR$/lib/pg_cache_key/version.rb">
351
+ <provider selected="true" editor-type-id="text-editor">
352
+ <state vertical-scroll-proportion="0.0">
353
+ <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
354
+ <folding />
355
+ </state>
356
+ </provider>
357
+ </entry>
358
+ <entry file="file://$PROJECT_DIR$/lib/pg_cache_key.rb">
359
+ <provider selected="true" editor-type-id="text-editor">
360
+ <state vertical-scroll-proportion="0.0">
361
+ <caret line="18" column="155" selection-start-line="18" selection-start-column="155" selection-end-line="18" selection-end-column="155" />
362
+ <folding />
363
+ </state>
364
+ </provider>
365
+ </entry>
366
+ <entry file="file://$PROJECT_DIR$/.gitignore">
367
+ <provider selected="true" editor-type-id="text-editor">
368
+ <state vertical-scroll-proportion="0.0">
369
+ <caret line="0" column="7" selection-start-line="0" selection-start-column="7" selection-end-line="0" selection-end-column="7" />
370
+ <folding />
371
+ </state>
372
+ </provider>
373
+ </entry>
374
+ <entry file="file://$PROJECT_DIR$/README.md">
375
+ <provider selected="true" editor-type-id="split-provider[text-editor;MultiMarkdownPreviewEditor]">
376
+ <state split_layout="FIRST">
377
+ <first_editor vertical-scroll-proportion="0.31802526">
378
+ <caret line="38" column="0" selection-start-line="38" selection-start-column="0" selection-end-line="38" selection-end-column="0" />
379
+ <folding />
380
+ </first_editor>
381
+ <second_editor />
382
+ </state>
383
+ </provider>
384
+ <provider editor-type-id="MultiMarkdownFxPreviewEditor">
385
+ <state />
386
+ </provider>
387
+ </entry>
388
+ <entry file="file://$PROJECT_DIR$/pg_cache_key.gemspec">
389
+ <provider selected="true" editor-type-id="text-editor">
390
+ <state vertical-scroll-proportion="0.25215518">
391
+ <caret line="13" column="64" selection-start-line="13" selection-start-column="64" selection-end-line="13" selection-end-column="64" />
392
+ <folding />
393
+ </state>
394
+ </provider>
395
+ </entry>
396
+ </component>
397
+ </project>
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in pg_cache_key.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 alekseyl
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,65 @@
1
+ # PgCacheKey
2
+ Attention! This gem intend to use only with PostrgreSQL, so it will not work other ways, BUT if your database have some
3
+ aggregation function you can get idea and create your own version of it.
4
+
5
+ Simple replace for cache_key for collections to make it very fast.
6
+ It's optimizing code near fragment_cache_key, replacing collection instatination with DB aggregation.
7
+
8
+ It respects all aspects of collection properties including order, limits, offsets and so.
9
+
10
+ Also comparing to rails 5 solution for collection cache key this one will not need to throw away all sub-collection caches
11
+ when any elements of the whole collection updates.
12
+
13
+
14
+ # Benchmark
15
+ the numbers I personaly get while comparing with rails 4.2 implementation of cache_key are:
16
+
17
+ Complex model
18
+ without includes: 10 items in collection ~ x1.3 faster, 20 ~ 1.55, 50 ~ x2, 1000 ~ x15
19
+
20
+ with includes: 10 items in collection ~ x5+ faster, 20 ~ x5-6+, 50 ~ x8.5, 1000 ~ x35
21
+
22
+ less complex model:
23
+
24
+ without includes: 10 items in collection ~ x1.2 faster, 20 ~ x1.25, 50 ~ x1.5, 1000 ~ x7.4
25
+
26
+ with includes: 10 items in collection ~ x3.6 faster, 20 ~ x4, 50 ~ x5.6, 1000 ~ x32
27
+
28
+ Of course this is not the numbers for whole page rendering, but it's noticeable.
29
+
30
+ Try it yourself.
31
+
32
+ ## Installation
33
+
34
+ Add this line to your application's Gemfile:
35
+
36
+ ```ruby
37
+ gem 'pg_cache_key'
38
+ ```
39
+
40
+ And then execute:
41
+
42
+ $ bundle
43
+
44
+ Or install it yourself as:
45
+
46
+ $ gem install pg_cache_key
47
+
48
+ ## Usage
49
+
50
+ It works out of the box for system uses pg.
51
+
52
+ ## Development
53
+
54
+ After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
55
+
56
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
57
+
58
+ ## Contributing
59
+
60
+ Bug reports and pull requests are welcome on GitHub at https://github.com/alekseyl/pg_cache_key.
61
+
62
+ ## License
63
+
64
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
65
+
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "pg_cache_key"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,23 @@
1
+ require "pg_cache_key/version"
2
+
3
+ # module ActiveRecord
4
+ # module CollectionCacheKey
5
+ # def collection_cache_key(collection = all, timestamp_column = :updated_at) # :nodoc:
6
+ # # why use connection.execute instead of doing collection.select because of an order. if you using some order on your scope
7
+ # # then columns you using to order must appear in the GROUP BY clause or be used in an aggregate function or you will get an error
8
+ # connection.execute( "SELECT md5(string_agg( #{[timestamp_column, :id].map{|fld| "\"t\".\"#{fld}\"::text" }.join('||')}, '') ) as cache_key
9
+ # FROM (#{ collection.try(:to_sql) }) t" )[0]['cache_key']
10
+ # end
11
+ # end
12
+ # end
13
+
14
+ module ActiveRecord
15
+ # = Active Record \Relation
16
+ class Relation
17
+ def cache_key(timestamp_column = :updated_at)
18
+ @cache_keys ||= {}
19
+ @cache_keys[timestamp_column] ||= connection.execute( "SELECT md5(string_agg( #{[timestamp_column, :id].map{|fld| "\"t\".\"#{fld}\"::text" }.join('||')}, '') ) as cache_key
20
+ FROM (#{ try(:to_sql) }) t" )[0]['cache_key']
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,3 @@
1
+ module PgCacheKey
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,38 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'pg_cache_key/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "pg_cache_key"
8
+ spec.version = PgCacheKey::VERSION
9
+ spec.authors = ["alekseyl"]
10
+ spec.email = ["leshchuk@gmail.com"]
11
+
12
+ spec.summary = %q{collection_cache_key replacement for system which uses PG as DB }
13
+ spec.description = %q{collection_cache_key replacement for system which uses PG as DB, uses PG aggregation functions }
14
+ spec.homepage = "https://github.com/alekseyl/pg_cache_key"
15
+ spec.license = "MIT"
16
+
17
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
19
+ if spec.respond_to?(:metadata)
20
+ spec.metadata['allowed_push_host'] = "https://rubygems.org"
21
+ else
22
+ raise "RubyGems 2.0 or newer is required to protect against " \
23
+ "public gem pushes."
24
+ end
25
+
26
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
27
+ f.match(%r{^(test|spec|features)/})
28
+ end
29
+ spec.bindir = "exe"
30
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
+ spec.require_paths = ["lib"]
32
+
33
+ spec.add_dependency "activerecord", ">=4.1"
34
+ spec.add_dependency "pg"
35
+
36
+ spec.add_development_dependency "bundler", "~> 1.13"
37
+ spec.add_development_dependency "rake", "~> 10.0"
38
+ end
metadata ADDED
@@ -0,0 +1,118 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pg_cache_key
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - alekseyl
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-09-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '4.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '4.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: pg
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.13'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.13'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.0'
69
+ description: 'collection_cache_key replacement for system which uses PG as DB, uses
70
+ PG aggregation functions '
71
+ email:
72
+ - leshchuk@gmail.com
73
+ executables: []
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - ".gitignore"
78
+ - ".idea/.name"
79
+ - ".idea/misc.xml"
80
+ - ".idea/modules.xml"
81
+ - ".idea/pg_cache_key.iml"
82
+ - ".idea/vcs.xml"
83
+ - ".idea/workspace.xml"
84
+ - Gemfile
85
+ - LICENSE.txt
86
+ - README.md
87
+ - Rakefile
88
+ - bin/console
89
+ - bin/setup
90
+ - lib/pg_cache_key.rb
91
+ - lib/pg_cache_key/version.rb
92
+ - pg_cache_key.gemspec
93
+ homepage: https://github.com/alekseyl/pg_cache_key
94
+ licenses:
95
+ - MIT
96
+ metadata:
97
+ allowed_push_host: https://rubygems.org
98
+ post_install_message:
99
+ rdoc_options: []
100
+ require_paths:
101
+ - lib
102
+ required_ruby_version: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ required_rubygems_version: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ requirements: []
113
+ rubyforge_project:
114
+ rubygems_version: 2.5.1
115
+ signing_key:
116
+ specification_version: 4
117
+ summary: collection_cache_key replacement for system which uses PG as DB
118
+ test_files: []