remexify 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a93e9dfa51e23357abc225471d4adb294901243d
4
- data.tar.gz: 3a8bac5a135a70acbbe60af80dba7493f6431525
3
+ metadata.gz: 51ce361fa194fcf58a8f1051da6147a7eb3f76af
4
+ data.tar.gz: 113e83eee6cb46fb6f625aa0345edbf1e6856145
5
5
  SHA512:
6
- metadata.gz: 7f50af213117d552b22c5c912dc5c48191cb0708fa1a92d10749b5a0800da99ba0826098d8ac9d404bb2a58eff09d0385af4748bc6f51bb46bccd9e5cfcec868
7
- data.tar.gz: ffbbe028b3213e4cdaa61f8f74c23d33836c580e856daeea6354c7bb04220852e6c1065fb6ed2d6490a60378e158652078c7570e840176a9b392728da7e60711
6
+ metadata.gz: 146a7494cc2d9cd353a0703c284c302394ba83729425edd92f00463f15ed74733e49f427348fb376e7ed898808c161ad1985ce98d1afa1771ffdf84fc0da6745
7
+ data.tar.gz: c03a12fee45434db2095410c0ef6d4f53287a37cbc4eefc3a3f6986b35be0a151d0b49fe168bc7d4d74575da637ae81d8bbedf4b69c3b1840804c51fd7b4c8d6
data/.idea/remexify.iml CHANGED
@@ -1,5 +1,8 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <module type="RUBY_MODULE" version="4">
3
+ <component name="CompassSettings">
4
+ <option name="compassSupportEnabled" value="true" />
5
+ </component>
3
6
  <component name="FacetManager">
4
7
  <facet type="gem" name="Gem">
5
8
  <configuration>
@@ -35,7 +38,7 @@
35
38
  <orderEntry type="library" scope="PROVIDED" name="rack-ssl (v1.3.4, rbenv: 2.1.1) [gem]" level="application" />
36
39
  <orderEntry type="library" scope="PROVIDED" name="rack-test (v0.6.2, rbenv: 2.1.1) [gem]" level="application" />
37
40
  <orderEntry type="library" scope="PROVIDED" name="rails (v3.2.19, rbenv: 2.1.1) [gem]" level="application" />
38
- <orderEntry type="library" scope="PROVIDED" name="railties (v4.1.5, rbenv: 2.1.1) [gem]" level="application" />
41
+ <orderEntry type="library" scope="PROVIDED" name="railties (v4.1.6, rbenv: 2.1.1) [gem]" level="application" />
39
42
  <orderEntry type="library" scope="PROVIDED" name="rake (v10.3.2, rbenv: 2.1.1) [gem]" level="application" />
40
43
  <orderEntry type="library" scope="PROVIDED" name="rdoc (v3.12.2, rbenv: 2.1.1) [gem]" level="application" />
41
44
  <orderEntry type="library" scope="PROVIDED" name="sprockets (v2.2.2, rbenv: 2.1.1) [gem]" level="application" />
data/.idea/workspace.xml CHANGED
@@ -23,97 +23,45 @@
23
23
  </component>
24
24
  <component name="FileEditorManager">
25
25
  <leaf>
26
- <file leaf-file-name="remexify.gemspec" pinned="false" current="false" current-in-tab="false">
27
- <entry file="file://$PROJECT_DIR$/remexify.gemspec">
28
- <provider selected="true" editor-type-id="text-editor">
29
- <state vertical-scroll-proportion="0.0" vertical-offset="315" max-vertical-offset="510">
30
- <caret line="21" column="23" selection-start-line="21" selection-start-column="23" selection-end-line="21" selection-end-column="23" />
31
- <folding />
32
- </state>
33
- </provider>
34
- </entry>
35
- </file>
36
- <file leaf-file-name="remexify.rb" pinned="false" current="false" current-in-tab="false">
37
- <entry file="file://$PROJECT_DIR$/lib/remexify.rb">
38
- <provider selected="true" editor-type-id="text-editor">
39
- <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="465">
40
- <caret line="25" column="31" selection-start-line="25" selection-start-column="31" selection-end-line="25" selection-end-column="31" />
41
- <folding />
42
- </state>
43
- </provider>
44
- </entry>
45
- </file>
46
- <file leaf-file-name="displayable_error.rb" pinned="false" current="false" current-in-tab="false">
47
- <entry file="file://$PROJECT_DIR$/lib/remexify/displayable_error.rb">
48
- <provider selected="true" editor-type-id="text-editor">
49
- <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="105">
50
- <caret line="1" column="3" selection-start-line="1" selection-start-column="3" selection-end-line="1" selection-end-column="3" />
51
- <folding />
52
- </state>
53
- </provider>
54
- </entry>
55
- </file>
56
- <file leaf-file-name="remexify_retriever.rb" pinned="false" current="false" current-in-tab="false">
57
- <entry file="file://$PROJECT_DIR$/lib/remexify/remexify_retriever.rb">
58
- <provider selected="true" editor-type-id="text-editor">
59
- <state vertical-scroll-proportion="0.0" vertical-offset="733" max-vertical-offset="1080">
60
- <caret line="13" column="6" selection-start-line="13" selection-start-column="6" selection-end-line="13" selection-end-column="6" />
61
- <folding />
62
- </state>
63
- </provider>
64
- </entry>
65
- </file>
66
- <file leaf-file-name="README.md" pinned="false" current="true" current-in-tab="true">
26
+ <file leaf-file-name="README.md" pinned="false" current="false" current-in-tab="false">
67
27
  <entry file="file://$PROJECT_DIR$/README.md">
68
- <provider selected="true" editor-type-id="text-editor">
69
- <state vertical-scroll-proportion="0.86725664" vertical-offset="1685" max-vertical-offset="2265">
70
- <caret line="145" column="40" selection-start-line="145" selection-start-column="40" selection-end-line="145" selection-end-column="40" />
71
- <folding />
72
- </state>
73
- </provider>
74
28
  <provider editor-type-id="MarkdownPreviewEditor">
75
29
  <state />
76
30
  </provider>
77
- </entry>
78
- </file>
79
- <file leaf-file-name="Gemfile" pinned="false" current="false" current-in-tab="false">
80
- <entry file="file://$PROJECT_DIR$/Gemfile">
81
31
  <provider selected="true" editor-type-id="text-editor">
82
- <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="150">
83
- <caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
32
+ <state vertical-scroll-proportion="-3.6296296" vertical-offset="3142" max-vertical-offset="4455">
33
+ <caret line="216" column="17" selection-start-line="216" selection-start-column="17" selection-end-line="216" selection-end-column="17" />
84
34
  <folding />
85
35
  </state>
86
36
  </provider>
87
37
  </entry>
88
38
  </file>
89
- <file leaf-file-name="remexify_generator.rb" pinned="false" current="false" current-in-tab="false">
90
- <entry file="file://$PROJECT_DIR$/lib/generators/remexify_generator.rb">
39
+ <file leaf-file-name="remexify.rb" pinned="false" current="false" current-in-tab="false">
40
+ <entry file="file://$PROJECT_DIR$/lib/remexify.rb">
91
41
  <provider selected="true" editor-type-id="text-editor">
92
- <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="570">
93
- <caret line="24" column="50" selection-start-line="24" selection-start-column="50" selection-end-line="24" selection-end-column="51" />
42
+ <state vertical-scroll-proportion="0.0" vertical-offset="72" max-vertical-offset="810">
43
+ <caret line="9" column="13" selection-start-line="9" selection-start-column="13" selection-end-line="9" selection-end-column="13" />
94
44
  <folding />
95
45
  </state>
96
46
  </provider>
97
47
  </entry>
98
48
  </file>
99
- <file leaf-file-name="standard_error.rb" pinned="false" current="false" current-in-tab="false">
100
- <entry file="file://$PROJECT_DIR$/lib/remexify/standard_error.rb">
49
+ <file leaf-file-name="remexify.gemspec" pinned="false" current="true" current-in-tab="true">
50
+ <entry file="file://$PROJECT_DIR$/remexify.gemspec">
101
51
  <provider selected="true" editor-type-id="text-editor">
102
- <state vertical-scroll-proportion="0.0" vertical-offset="45" max-vertical-offset="135">
103
- <caret line="3" column="3" selection-start-line="3" selection-start-column="3" selection-end-line="3" selection-end-column="3" />
52
+ <state vertical-scroll-proportion="0.3233831" vertical-offset="0" max-vertical-offset="603">
53
+ <caret line="13" column="42" selection-start-line="13" selection-start-column="31" selection-end-line="13" selection-end-column="42" />
104
54
  <folding />
105
55
  </state>
106
56
  </provider>
107
57
  </entry>
108
58
  </file>
109
- <file leaf-file-name="remexify_writer.rb" pinned="false" current="false" current-in-tab="false">
110
- <entry file="file://$PROJECT_DIR$/lib/remexify/remexify_writer.rb">
59
+ <file leaf-file-name="version.rb" pinned="false" current="false" current-in-tab="false">
60
+ <entry file="file://$PROJECT_DIR$/lib/remexify/version.rb">
111
61
  <provider selected="true" editor-type-id="text-editor">
112
- <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="465">
113
- <caret line="6" column="50" selection-start-line="6" selection-start-column="50" selection-end-line="6" selection-end-column="50" />
114
- <folding>
115
- <element signature="e#175#4803#0" expanded="false" />
116
- </folding>
62
+ <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="120">
63
+ <caret line="1" column="16" selection-start-line="1" selection-start-column="16" selection-end-line="1" selection-end-column="16" />
64
+ <folding />
117
65
  </state>
118
66
  </provider>
119
67
  </entry>
@@ -136,22 +84,23 @@
136
84
  <option value="$PROJECT_DIR$/lib/generators/templates/remexify_log.rb" />
137
85
  <option value="$PROJECT_DIR$/lib/remexify/runtime_error.rb" />
138
86
  <option value="$PROJECT_DIR$/lib/remexify/standard_error.rb" />
139
- <option value="$PROJECT_DIR$/lib/generators/templates/initialize_remexify.rb" />
140
87
  <option value="$PROJECT_DIR$/lib/remexify/displayable_error.rb" />
141
- <option value="$PROJECT_DIR$/lib/remexify/remexify_retriever.rb" />
142
88
  <option value="$PROJECT_DIR$/lib/generators/templates/create_remexify_lognotes.rb" />
143
89
  <option value="$PROJECT_DIR$/lib/remexify/version.rb" />
144
90
  <option value="$PROJECT_DIR$/remexify.gemspec" />
145
91
  <option value="$PROJECT_DIR$/lib/generators/remexify_generator.rb" />
92
+ <option value="$PROJECT_DIR$/lib/generators/templates/initialize_remexify.rb" />
146
93
  <option value="$PROJECT_DIR$/lib/remexify.rb" />
94
+ <option value="$PROJECT_DIR$/lib/generators/templates/create_remexify_logowners.rb" />
147
95
  <option value="$PROJECT_DIR$/lib/remexify/remexify_writer.rb" />
96
+ <option value="$PROJECT_DIR$/lib/remexify/remexify_retriever.rb" />
148
97
  <option value="$PROJECT_DIR$/README.md" />
149
98
  </list>
150
99
  </option>
151
100
  </component>
152
101
  <component name="ProjectFrameBounds">
153
- <option name="x" value="164" />
154
- <option name="y" value="38" />
102
+ <option name="x" value="333" />
103
+ <option name="y" value="102" />
155
104
  <option name="width" value="1402" />
156
105
  <option name="height" value="869" />
157
106
  </component>
@@ -246,13 +195,53 @@
246
195
  <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
247
196
  </PATH_ELEMENT>
248
197
  </PATH>
198
+ <PATH>
199
+ <PATH_ELEMENT>
200
+ <option name="myItemId" value="remexify" />
201
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
202
+ </PATH_ELEMENT>
203
+ <PATH_ELEMENT>
204
+ <option name="myItemId" value="remexify" />
205
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
206
+ </PATH_ELEMENT>
207
+ <PATH_ELEMENT>
208
+ <option name="myItemId" value="lib" />
209
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
210
+ </PATH_ELEMENT>
211
+ <PATH_ELEMENT>
212
+ <option name="myItemId" value="generators" />
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="remexify" />
219
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
220
+ </PATH_ELEMENT>
221
+ <PATH_ELEMENT>
222
+ <option name="myItemId" value="remexify" />
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="generators" />
231
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
232
+ </PATH_ELEMENT>
233
+ <PATH_ELEMENT>
234
+ <option name="myItemId" value="templates" />
235
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
236
+ </PATH_ELEMENT>
237
+ </PATH>
249
238
  </subPane>
250
239
  </pane>
251
240
  </panes>
252
241
  </component>
253
242
  <component name="PropertiesComponent">
254
243
  <property name="WebServerToolWindowFactoryState" value="false" />
255
- <property name="SearchEverywhereHistoryKey" value="gemsp&#9;FILE&#9;file:///Users/works/Documents/OF/RUBY-211/remexify/remexify.gemspec&#10;gemspe&#9;FILE&#9;file:///Users/works/Documents/OF/RUBY-211/remexify/remexify.gemspec&#10;gem&#9;FILE&#9;file:///Users/works/Documents/OF/RUBY-211/remexify/remexify.gemspec&#10;version&#9;FILE&#9;file:///Users/works/Documents/OF/RUBY-211/remexify/lib/remexify/version.rb" />
244
+ <property name="SearchEverywhereHistoryKey" value="versio&#9;FILE&#9;file:///Users/works/Documents/OF/RUBY-211/remexify/lib/remexify/version.rb&#10;retrie&#9;FILE&#9;file:///Users/works/Documents/OF/RUBY-211/remexify/lib/remexify/remexify_retriever.rb&#10;remexifyre&#9;FILE&#9;file:///Users/works/Documents/OF/RUBY-211/remexify/lib/remexify/remexify_retriever.rb&#10;remexify&#9;FILE&#9;file:///Users/works/Documents/OF/RUBY-211/remexify/lib/remexify/remexify_writer.rb&#10;log&#9;FILE&#9;file:///Users/works/Documents/OF/RUBY-211/remexify/lib/generators/templates/create_remexify_lognotes.rb&#10;own&#9;FILE&#9;file:///Users/works/Documents/OF/RUBY-211/remexify/lib/generators/templates/create_remexify_logowners.rb&#10;initiali&#9;FILE&#9;file:///Users/works/Documents/OF/RUBY-211/remexify/lib/generators/templates/initialize_remexify.rb&#10;remexify_r&#9;FILE&#9;file:///Users/works/Documents/OF/RUBY-211/remexify/lib/remexify/remexify_retriever.rb&#10;readme&#9;FILE&#9;file:///Users/works/Documents/OF/RUBY-211/remexify/README.md&#10;retrieve&#9;FILE&#9;file:///Users/works/Documents/OF/RUBY-211/remexify/lib/remexify/remexify_retriever.rb&#10;gemsp&#9;FILE&#9;file:///Users/works/Documents/OF/RUBY-211/remexify/remexify.gemspec&#10;gemspe&#9;FILE&#9;file:///Users/works/Documents/OF/RUBY-211/remexify/remexify.gemspec&#10;gem&#9;FILE&#9;file:///Users/works/Documents/OF/RUBY-211/remexify/remexify.gemspec&#10;version&#9;FILE&#9;file:///Users/works/Documents/OF/RUBY-211/remexify/lib/remexify/version.rb" />
256
245
  <property name="FullScreen" value="false" />
257
246
  </component>
258
247
  <component name="RecentsManager">
@@ -358,7 +347,7 @@
358
347
  </task>
359
348
  <servers />
360
349
  </component>
361
- <component name="TodoView" selected-index="0">
350
+ <component name="TodoView" selected-index="1">
362
351
  <todo-panel id="selected-file">
363
352
  <are-packages-shown value="false" />
364
353
  <are-modules-shown value="false" />
@@ -379,13 +368,13 @@
379
368
  </todo-panel>
380
369
  </component>
381
370
  <component name="ToolWindowManager">
382
- <frame x="164" y="38" width="1402" height="869" extended-state="0" />
371
+ <frame x="333" y="102" width="1402" height="869" extended-state="0" />
383
372
  <editor active="true" />
384
373
  <layout>
385
374
  <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" />
386
- <window_info id="Terminal" active="false" anchor="top" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.19260204" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
375
+ <window_info id="Terminal" active="false" anchor="top" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.19309463" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
387
376
  <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.17678382" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
388
- <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3380102" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
377
+ <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3375959" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
389
378
  <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="7" side_tool="false" content_ui="tabs" />
390
379
  <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
391
380
  <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="0" side_tool="true" content_ui="tabs" />
@@ -393,7 +382,7 @@
393
382
  <window_info id="Regex Tester" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32908162" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
394
383
  <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32780612" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
395
384
  <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="2" side_tool="false" content_ui="tabs" />
396
- <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.21102941" sideWeight="0.5" order="1" side_tool="false" content_ui="combo" />
385
+ <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.23161764" sideWeight="0.5" order="1" side_tool="false" content_ui="combo" />
397
386
  <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33716476" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
398
387
  <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="8" side_tool="false" content_ui="tabs" />
399
388
  <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="4" side_tool="false" content_ui="tabs" />
@@ -403,6 +392,28 @@
403
392
  <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="3" side_tool="false" content_ui="combo" />
404
393
  <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="9" side_tool="false" content_ui="tabs" />
405
394
  </layout>
395
+ <layout-to-restore>
396
+ <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="8" side_tool="false" content_ui="tabs" />
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="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
399
+ <window_info id="Terminal" active="false" anchor="top" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.19309463" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
400
+ <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="2" side_tool="false" content_ui="tabs" />
401
+ <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.17678382" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
402
+ <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3375959" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
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="7" side_tool="false" content_ui="tabs" />
404
+ <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
405
+ <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="0" side_tool="true" content_ui="tabs" />
406
+ <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="3" side_tool="false" content_ui="tabs" />
407
+ <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.2857143" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
408
+ <window_info id="Regex Tester" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32908162" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
409
+ <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32780612" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
410
+ <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="2" side_tool="false" content_ui="tabs" />
411
+ <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="1" side_tool="false" content_ui="tabs" />
412
+ <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.23144746" sideWeight="0.5" order="1" side_tool="false" content_ui="combo" />
413
+ <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="9" side_tool="false" content_ui="tabs" />
414
+ <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="3" side_tool="false" content_ui="combo" />
415
+ <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33716476" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
416
+ </layout-to-restore>
406
417
  </component>
407
418
  <component name="Vcs.Log.UiProperties">
408
419
  <option name="RECENTLY_FILTERED_USER_GROUPS">
@@ -424,80 +435,10 @@
424
435
  <breakpoint-manager />
425
436
  </component>
426
437
  <component name="editorHistoryManager">
427
- <entry file="file://$PROJECT_DIR$/lib/remexify.rb">
428
- <provider selected="true" editor-type-id="text-editor">
429
- <state vertical-scroll-proportion="0.0" vertical-offset="375" max-vertical-offset="465">
430
- <caret line="25" column="8" selection-start-line="25" selection-start-column="8" selection-end-line="25" selection-end-column="8" />
431
- </state>
432
- </provider>
433
- </entry>
434
- <entry file="file://$PROJECT_DIR$/lib/generators/templates/initialize_remexify.rb">
435
- <provider selected="true" editor-type-id="text-editor">
436
- <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="135">
437
- <caret line="0" column="26" selection-start-line="0" selection-start-column="26" selection-end-line="0" selection-end-column="26" />
438
- </state>
439
- </provider>
440
- </entry>
441
- <entry file="file://$PROJECT_DIR$/lib/remexify/remexify_retriever.rb">
442
- <provider selected="true" editor-type-id="text-editor">
443
- <state vertical-scroll-proportion="0.0" vertical-offset="492" max-vertical-offset="1080">
444
- <caret line="41" column="32" selection-start-line="41" selection-start-column="32" selection-end-line="41" selection-end-column="32" />
445
- </state>
446
- </provider>
447
- </entry>
448
- <entry file="file://$PROJECT_DIR$/lib/remexify/remexify_writer.rb">
449
- <provider selected="true" editor-type-id="text-editor">
450
- <state vertical-scroll-proportion="0.0" vertical-offset="1260" max-vertical-offset="1440">
451
- <caret line="84" column="0" selection-start-line="84" selection-start-column="0" selection-end-line="84" selection-end-column="0" />
452
- <folding>
453
- <element signature="e#175#4803#0" expanded="false" />
454
- </folding>
455
- </state>
456
- </provider>
457
- </entry>
458
- <entry file="file://$PROJECT_DIR$/README.md">
459
- <provider selected="true" editor-type-id="text-editor">
460
- <state vertical-scroll-proportion="0.0" vertical-offset="1711" max-vertical-offset="2250">
461
- <caret line="133" column="20" selection-start-line="133" selection-start-column="20" selection-end-line="133" selection-end-column="20" />
462
- </state>
463
- </provider>
464
- <provider editor-type-id="MarkdownPreviewEditor">
465
- <state />
466
- </provider>
467
- </entry>
468
- <entry file="file://$PROJECT_DIR$/lib/generators/templates/create_remexify_lognotes.rb">
469
- <provider selected="true" editor-type-id="text-editor">
470
- <state vertical-scroll-proportion="0.0" vertical-offset="270" max-vertical-offset="645">
471
- <caret line="18" column="24" selection-start-line="18" selection-start-column="24" selection-end-line="18" selection-end-column="24" />
472
- </state>
473
- </provider>
474
- </entry>
475
- <entry file="file://$PROJECT_DIR$/lib/remexify/version.rb">
476
- <provider selected="true" editor-type-id="text-editor">
477
- <state vertical-scroll-proportion="0.0" vertical-offset="15" max-vertical-offset="135">
478
- <caret line="1" column="16" selection-start-line="1" selection-start-column="16" selection-end-line="1" selection-end-column="16" />
479
- </state>
480
- </provider>
481
- </entry>
482
- <entry file="file://$PROJECT_DIR$/lib/remexify/runtime_error.rb">
483
- <provider selected="true" editor-type-id="text-editor">
484
- <state vertical-scroll-proportion="0.0" vertical-offset="30" max-vertical-offset="135">
485
- <caret line="2" column="48" selection-start-line="2" selection-start-column="48" selection-end-line="2" selection-end-column="48" />
486
- </state>
487
- </provider>
488
- </entry>
489
- <entry file="file://$PROJECT_DIR$/lib/remexify/displayable_error.rb">
490
- <provider selected="true" editor-type-id="text-editor">
491
- <state vertical-scroll-proportion="0.0" vertical-offset="15" max-vertical-offset="105">
492
- <caret line="1" column="3" selection-start-line="1" selection-start-column="3" selection-end-line="1" selection-end-column="3" />
493
- </state>
494
- </provider>
495
- </entry>
496
438
  <entry file="file://$PROJECT_DIR$/lib/remexify/standard_error.rb">
497
439
  <provider selected="true" editor-type-id="text-editor">
498
440
  <state vertical-scroll-proportion="0.0" vertical-offset="45" max-vertical-offset="135">
499
441
  <caret line="3" column="3" selection-start-line="3" selection-start-column="3" selection-end-line="3" selection-end-column="3" />
500
- <folding />
501
442
  </state>
502
443
  </provider>
503
444
  </entry>
@@ -548,21 +489,19 @@
548
489
  <provider selected="true" editor-type-id="text-editor">
549
490
  <state vertical-scroll-proportion="0.0" vertical-offset="158" max-vertical-offset="1260">
550
491
  <caret line="26" column="51" selection-start-line="26" selection-start-column="51" selection-end-line="26" selection-end-column="51" />
551
- <folding>
552
- <element signature="e#175#4803#0" expanded="false" />
553
- </folding>
492
+ <folding />
554
493
  </state>
555
494
  </provider>
556
495
  </entry>
557
496
  <entry file="file://$PROJECT_DIR$/README.md">
497
+ <provider editor-type-id="MarkdownPreviewEditor">
498
+ <state />
499
+ </provider>
558
500
  <provider selected="true" editor-type-id="text-editor">
559
501
  <state vertical-scroll-proportion="0.0" vertical-offset="615" max-vertical-offset="2145">
560
502
  <caret line="64" column="15" selection-start-line="64" selection-start-column="15" selection-end-line="64" selection-end-column="15" />
561
503
  </state>
562
504
  </provider>
563
- <provider editor-type-id="MarkdownPreviewEditor">
564
- <state />
565
- </provider>
566
505
  </entry>
567
506
  <entry file="file://$PROJECT_DIR$/lib/generators/templates/create_remexify_lognotes.rb">
568
507
  <provider selected="true" editor-type-id="text-editor">
@@ -596,7 +535,6 @@
596
535
  <provider selected="true" editor-type-id="text-editor">
597
536
  <state vertical-scroll-proportion="0.0" vertical-offset="45" max-vertical-offset="135">
598
537
  <caret line="3" column="3" selection-start-line="3" selection-start-column="3" selection-end-line="3" selection-end-column="3" />
599
- <folding />
600
538
  </state>
601
539
  </provider>
602
540
  </entry>
@@ -633,7 +571,6 @@
633
571
  <provider selected="true" editor-type-id="text-editor">
634
572
  <state vertical-scroll-proportion="0.0" vertical-offset="45" max-vertical-offset="135">
635
573
  <caret line="3" column="3" selection-start-line="3" selection-start-column="3" selection-end-line="3" selection-end-column="3" />
636
- <folding />
637
574
  </state>
638
575
  </provider>
639
576
  </entry>
@@ -644,20 +581,6 @@
644
581
  </state>
645
582
  </provider>
646
583
  </entry>
647
- <entry file="file://$PROJECT_DIR$/lib/remexify/runtime_error.rb">
648
- <provider selected="true" editor-type-id="text-editor">
649
- <state vertical-scroll-proportion="0.05319149" vertical-offset="0" max-vertical-offset="564">
650
- <caret line="2" column="48" selection-start-line="2" selection-start-column="48" selection-end-line="2" selection-end-column="48" />
651
- </state>
652
- </provider>
653
- </entry>
654
- <entry file="file://$PROJECT_DIR$/lib/remexify/version.rb">
655
- <provider selected="true" editor-type-id="text-editor">
656
- <state vertical-scroll-proportion="0.05319149" vertical-offset="0" max-vertical-offset="564">
657
- <caret line="2" column="3" selection-start-line="2" selection-start-column="3" selection-end-line="2" selection-end-column="3" />
658
- </state>
659
- </provider>
660
- </entry>
661
584
  <entry file="file://$PROJECT_DIR$/.gitignore">
662
585
  <provider selected="true" editor-type-id="text-editor">
663
586
  <state vertical-scroll-proportion="0.5851064" vertical-offset="0" max-vertical-offset="564">
@@ -694,22 +617,6 @@
694
617
  </state>
695
618
  </provider>
696
619
  </entry>
697
- <entry file="file://$PROJECT_DIR$/lib/remexify/standard_error.rb">
698
- <provider selected="true" editor-type-id="text-editor">
699
- <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="135">
700
- <caret line="3" column="3" selection-start-line="3" selection-start-column="3" selection-end-line="3" selection-end-column="3" />
701
- <folding />
702
- </state>
703
- </provider>
704
- </entry>
705
- <entry file="file://$PROJECT_DIR$/remexify.gemspec">
706
- <provider selected="true" editor-type-id="text-editor">
707
- <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="510">
708
- <caret line="21" column="23" selection-start-line="21" selection-start-column="23" selection-end-line="21" selection-end-column="23" />
709
- <folding />
710
- </state>
711
- </provider>
712
- </entry>
713
620
  <entry file="file://$USER_HOME$/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/railties-3.2.19/lib/rails/generators/base.rb">
714
621
  <provider selected="true" editor-type-id="text-editor">
715
622
  <state vertical-scroll-proportion="-0.7960199" vertical-offset="480" max-vertical-offset="5940">
@@ -738,36 +645,73 @@
738
645
  </state>
739
646
  </provider>
740
647
  </entry>
741
- <entry file="file://$PROJECT_DIR$/lib/generators/templates/initialize_remexify.rb">
648
+ <entry file="file://$USER_HOME$/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/activesupport-3.2.19/lib/active_support/configurable.rb">
742
649
  <provider selected="true" editor-type-id="text-editor">
743
- <state vertical-scroll-proportion="0.07438017" vertical-offset="0" max-vertical-offset="605">
744
- <caret line="3" column="0" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
650
+ <state vertical-scroll-proportion="0.2231405" vertical-offset="0" max-vertical-offset="1440">
651
+ <caret line="9" column="9" selection-start-line="9" selection-start-column="9" selection-end-line="9" selection-end-column="9" />
745
652
  </state>
746
653
  </provider>
747
654
  </entry>
748
- <entry file="file://$PROJECT_DIR$/lib/generators/templates/create_remexify_lognotes.rb">
655
+ <entry file="file://$PROJECT_DIR$/LICENSE.txt">
656
+ <provider editor-type-id="com.intellij.persistence.database.editor.CsvTableFileEditorProvider">
657
+ <state />
658
+ </provider>
749
659
  <provider selected="true" editor-type-id="text-editor">
750
- <state vertical-scroll-proportion="0.23140496" vertical-offset="40" max-vertical-offset="645">
751
- <caret line="12" column="0" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
660
+ <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="578">
661
+ <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
752
662
  </state>
753
663
  </provider>
754
664
  </entry>
755
- <entry file="file://$PROJECT_DIR$/lib/generators/remexify_generator.rb">
665
+ <entry file="file://$PROJECT_DIR$/Gemfile.lock">
756
666
  <provider selected="true" editor-type-id="text-editor">
757
- <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="570">
758
- <caret line="24" column="50" selection-start-line="24" selection-start-column="50" selection-end-line="24" selection-end-column="51" />
759
- <folding />
667
+ <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1530">
668
+ <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
669
+ </state>
670
+ </provider>
671
+ </entry>
672
+ <entry file="file://$PROJECT_DIR$/Rakefile">
673
+ <provider selected="true" editor-type-id="text-editor">
674
+ <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="605">
675
+ <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
676
+ </state>
677
+ </provider>
678
+ </entry>
679
+ <entry file="file://$APPLICATION_HOME_DIR$/rubystubs21/runtime_error.rb">
680
+ <provider selected="true" editor-type-id="text-editor">
681
+ <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="450">
682
+ <caret line="22" column="25" selection-start-line="22" selection-start-column="25" selection-end-line="22" selection-end-column="25" />
683
+ </state>
684
+ </provider>
685
+ </entry>
686
+ <entry file="file://$APPLICATION_HOME_DIR$/rubystubs21/standard_error.rb">
687
+ <provider selected="true" editor-type-id="text-editor">
688
+ <state vertical-scroll-proportion="0.54545456" vertical-offset="0" max-vertical-offset="605">
689
+ <caret line="22" column="6" selection-start-line="22" selection-start-column="6" selection-end-line="22" selection-end-column="6" />
760
690
  </state>
761
691
  </provider>
762
692
  </entry>
763
693
  <entry file="file://$PROJECT_DIR$/Gemfile">
764
694
  <provider selected="true" editor-type-id="text-editor">
765
- <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="150">
695
+ <state vertical-scroll-proportion="0.09917355" vertical-offset="0" max-vertical-offset="605">
766
696
  <caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
697
+ </state>
698
+ </provider>
699
+ </entry>
700
+ <entry file="file://$APPLICATION_HOME_DIR$/rubystubs21/kernel.rb">
701
+ <provider selected="true" editor-type-id="text-editor">
702
+ <state vertical-scroll-proportion="0.33952704" vertical-offset="30114" max-vertical-offset="33630">
703
+ <caret line="2021" column="8" selection-start-line="2021" selection-start-column="8" selection-end-line="2021" selection-end-column="8" />
767
704
  <folding />
768
705
  </state>
769
706
  </provider>
770
707
  </entry>
708
+ <entry file="file://$USER_HOME$/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/railties-4.1.6/lib/rails/generators/named_base.rb">
709
+ <provider selected="true" editor-type-id="text-editor">
710
+ <state vertical-scroll-proportion="0.8677686" vertical-offset="0" max-vertical-offset="3165">
711
+ <caret line="35" column="12" selection-start-line="35" selection-start-column="12" selection-end-line="35" selection-end-column="12" />
712
+ </state>
713
+ </provider>
714
+ </entry>
771
715
  <entry file="file://$PROJECT_DIR$/lib/remexify/displayable_error.rb">
772
716
  <provider selected="true" editor-type-id="text-editor">
773
717
  <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="105">
@@ -776,42 +720,104 @@
776
720
  </state>
777
721
  </provider>
778
722
  </entry>
779
- <entry file="file://$PROJECT_DIR$/lib/remexify/remexify_retriever.rb">
723
+ <entry file="file://$PROJECT_DIR$/lib/generators/remexify_generator.rb">
780
724
  <provider selected="true" editor-type-id="text-editor">
781
- <state vertical-scroll-proportion="0.0" vertical-offset="165" max-vertical-offset="1080">
782
- <caret line="13" column="6" selection-start-line="13" selection-start-column="6" selection-end-line="13" selection-end-column="6" />
725
+ <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="675">
726
+ <caret line="29" column="80" selection-start-line="29" selection-start-column="80" selection-end-line="29" selection-end-column="80" />
783
727
  <folding />
784
728
  </state>
785
729
  </provider>
786
730
  </entry>
787
- <entry file="file://$PROJECT_DIR$/lib/remexify.rb">
731
+ <entry file="file://$PROJECT_DIR$/lib/generators/templates/initialize_remexify.rb">
788
732
  <provider selected="true" editor-type-id="text-editor">
789
- <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="465">
790
- <caret line="25" column="31" selection-start-line="25" selection-start-column="31" selection-end-line="25" selection-end-column="31" />
733
+ <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="210">
734
+ <caret line="7" column="3" selection-start-line="7" selection-start-column="3" selection-end-line="7" selection-end-column="3" />
735
+ <folding />
736
+ </state>
737
+ </provider>
738
+ </entry>
739
+ <entry file="file://$PROJECT_DIR$/lib/remexify/standard_error.rb">
740
+ <provider selected="true" editor-type-id="text-editor">
741
+ <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="135">
742
+ <caret line="3" column="3" selection-start-line="3" selection-start-column="3" selection-end-line="3" selection-end-column="3" />
743
+ <folding />
744
+ </state>
745
+ </provider>
746
+ </entry>
747
+ <entry file="file://$PROJECT_DIR$/lib/remexify/runtime_error.rb">
748
+ <provider selected="true" editor-type-id="text-editor">
749
+ <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="135">
750
+ <caret line="2" column="48" selection-start-line="2" selection-start-column="48" selection-end-line="2" selection-end-column="48" />
751
+ <folding />
752
+ </state>
753
+ </provider>
754
+ </entry>
755
+ <entry file="file://$PROJECT_DIR$/lib/generators/templates/create_remexify_lognotes.rb">
756
+ <provider selected="true" editor-type-id="text-editor">
757
+ <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="645">
758
+ <caret line="9" column="34" selection-start-line="9" selection-start-column="34" selection-end-line="9" selection-end-column="34" />
791
759
  <folding />
792
760
  </state>
793
761
  </provider>
794
762
  </entry>
795
763
  <entry file="file://$PROJECT_DIR$/lib/remexify/remexify_writer.rb">
796
764
  <provider selected="true" editor-type-id="text-editor">
797
- <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="465">
798
- <caret line="6" column="50" selection-start-line="6" selection-start-column="50" selection-end-line="6" selection-end-column="50" />
799
- <folding>
800
- <element signature="e#175#4803#0" expanded="false" />
801
- </folding>
765
+ <state vertical-scroll-proportion="0.0" vertical-offset="1845" max-vertical-offset="2730">
766
+ <caret line="135" column="47" selection-start-line="135" selection-start-column="47" selection-end-line="135" selection-end-column="47" />
767
+ <folding />
802
768
  </state>
803
769
  </provider>
804
770
  </entry>
805
- <entry file="file://$PROJECT_DIR$/README.md">
771
+ <entry file="file://$PROJECT_DIR$/lib/remexify/remexify_retriever.rb">
772
+ <provider selected="true" editor-type-id="text-editor">
773
+ <state vertical-scroll-proportion="0.0" vertical-offset="777" max-vertical-offset="1395">
774
+ <caret line="72" column="96" selection-start-line="72" selection-start-column="96" selection-end-line="72" selection-end-column="96" />
775
+ <folding />
776
+ </state>
777
+ </provider>
778
+ </entry>
779
+ <entry file="file://$PROJECT_DIR$/lib/generators/templates/create_remexify_logowners.rb">
806
780
  <provider selected="true" editor-type-id="text-editor">
807
- <state vertical-scroll-proportion="0.86725664" vertical-offset="1685" max-vertical-offset="2265">
808
- <caret line="145" column="40" selection-start-line="145" selection-start-column="40" selection-end-line="145" selection-end-column="40" />
781
+ <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="405">
782
+ <caret line="8" column="0" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
809
783
  <folding />
810
784
  </state>
811
785
  </provider>
786
+ </entry>
787
+ <entry file="file://$PROJECT_DIR$/README.md">
812
788
  <provider editor-type-id="MarkdownPreviewEditor">
813
789
  <state />
814
790
  </provider>
791
+ <provider selected="true" editor-type-id="text-editor">
792
+ <state vertical-scroll-proportion="-3.6296296" vertical-offset="3142" max-vertical-offset="4455">
793
+ <caret line="216" column="17" selection-start-line="216" selection-start-column="17" selection-end-line="216" selection-end-column="17" />
794
+ <folding />
795
+ </state>
796
+ </provider>
797
+ </entry>
798
+ <entry file="file://$PROJECT_DIR$/lib/remexify/version.rb">
799
+ <provider selected="true" editor-type-id="text-editor">
800
+ <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="120">
801
+ <caret line="1" column="16" selection-start-line="1" selection-start-column="16" selection-end-line="1" selection-end-column="16" />
802
+ <folding />
803
+ </state>
804
+ </provider>
805
+ </entry>
806
+ <entry file="file://$PROJECT_DIR$/lib/remexify.rb">
807
+ <provider selected="true" editor-type-id="text-editor">
808
+ <state vertical-scroll-proportion="0.0" vertical-offset="72" max-vertical-offset="810">
809
+ <caret line="9" column="13" selection-start-line="9" selection-start-column="13" selection-end-line="9" selection-end-column="13" />
810
+ <folding />
811
+ </state>
812
+ </provider>
813
+ </entry>
814
+ <entry file="file://$PROJECT_DIR$/remexify.gemspec">
815
+ <provider selected="true" editor-type-id="text-editor">
816
+ <state vertical-scroll-proportion="0.3233831" vertical-offset="0" max-vertical-offset="603">
817
+ <caret line="13" column="42" selection-start-line="13" selection-start-column="31" selection-end-line="13" selection-end-column="42" />
818
+ <folding />
819
+ </state>
820
+ </provider>
815
821
  </entry>
816
822
  </component>
817
823
  <component name="regexState">
data/README.md CHANGED
@@ -1,14 +1,30 @@
1
1
  # Remexify
2
2
 
3
- Remexify is a simple, opinionated Ruby on Rails gem to write logs to your database. No fluff and to the point,
4
- record and access your logs anytime from your database.
3
+ Remexify is the world's simplest Rails-only ActiveRecord gem to write/retrieve logs written into your database's table.
4
+ Its philosophy is not to be a dictator gem, so you have your control over what to log, the log level, and et cetera.
5
+ Remexify is happy to be no fluff, and to-the-point!
5
6
 
6
7
  ## Behind the scene
7
8
 
8
9
  > Roses are red violets are blue, a log is not a poem it should be accessible to you.
9
10
 
10
- In all the projects I am working on, I always have a database-backed logger. I am tired of managing
11
- all of those, but should-be identical logger. So, this gem really helped in.
11
+ Remexify is always by my side whenever I need to log something into the database. I am tired of managing different logger,
12
+ or duplicatings codes accross multitude of projects I am working on only to have this kind of ability that I wanted.
13
+ Therefore, I refactor it and made it into a gem available to all projects a bundle away not only for mine, but also for yours.
14
+ I wish it will help you somehow.
15
+
16
+ ## Why should you use Remexify?
17
+
18
+ Remexify...
19
+
20
+ 1. Help you log to your own database, by giving you the control and ease on when/where to do that.
21
+ 2. Let you log not only an error, but also info, log, etc. Actually, "error" is just a numeric constant.
22
+ 3. Gives you the flexible means of accessing your logged error.
23
+ 4. Let you *censor* specific error classes which you don't want it to appear in the backtrace.
24
+ 5. Let you define acceptable/unacceptable classes of error which you can use to control what instance of exception class you want to dismiss, or to keep.
25
+ 6. Logs similar error once, but will record the frequency if similar error occurred again.
26
+ 7. Can associate your logs to certain user, object, or anything.
27
+ 7. Is free and open source for all the People of Earth.
12
28
 
13
29
  ## Installation
14
30
 
@@ -38,7 +54,7 @@ is nothing but a StandardError subclassed.
38
54
 
39
55
  If Remexify caught exceptions any of the above class, it will mark `already_logged` to `true`. Remexify won't log it again when parent/calling method rescue the error.
40
56
 
41
- ## Usage
57
+ ## Basic Usage
42
58
 
43
59
  To use this gem, you need to generate some files first. You can let the gem to generate all required files, including migration and initializer, for you. To do so, issue:
44
60
 
@@ -76,7 +92,7 @@ Some level is predefined:
76
92
  WARNING = 200
77
93
  ERROR = 300
78
94
 
79
- Thus, if you invoke `info()` level will be 100.
95
+ Thus, if you want to write info log by invoking `info()` then the log will be recorded with level set to 100.
80
96
 
81
97
  The obj can be any object. You can pass it a(n instance of) `String`, or an `Exception`, `StandardError`, `RuntimeError`, `DisplayableError`.
82
98
 
@@ -103,12 +119,16 @@ Or, you may also retrieve all logs recorded today:
103
119
  Both methods accepts a hash to which you can indicate an ordering of retrieved data:
104
120
 
105
121
  Remexify::Retrieve.all order: "created_at DESC"
122
+
123
+ A rather complex query:
124
+
125
+ Remexify::Retrieve.all(order: "level ASC", owned_by: "1", level: "=200")
106
126
 
107
127
  You may also delete all the logs in your database:
108
128
 
109
129
  Remexify.delete_all_logs
110
130
 
111
- ## What is recorded?
131
+ ## What is recorded in the database?
112
132
 
113
133
  These are the fields that is recorded:
114
134
 
@@ -127,6 +147,127 @@ description | :desc | programmer may pass in additional description here
127
147
  frequency | N/A | how many times `Remexify` encounter this error?
128
148
  timestamps | N/A | timestamp of the error when it was created, and last updated.
129
149
 
150
+ ## Define what errors to keep and what to dismiss.
151
+
152
+ Sometimes, you don't want an error to be logged. In certain cases, an error is not supposed to be logged. In other cases,
153
+ a specific logic is applied to acceptable, harmless specific error rather than poluting the database.
154
+
155
+ I afraid you think that I encourage the use of error for control statement. Not at all. Consider this given scenario:
156
+
157
+ > You are designing an API which will be executed by a thread in a time you cannot be sure when, in other words: asynchronously.
158
+ > In some point of time, you expect that your class can raise a harmless exception. This exception is indeed an error,
159
+ > but is merely to indicate to the user that they cannot do certain action. Therefore, the error raised will be noticeable
160
+ > but the parent class and in turn, by Remexify. You wish not to log this error, because you don't want your database
161
+ > to be polluted with this kind of harmless, acceptable, normal error. Some error that not causing headcache, some error
162
+ > that is not a bug. But the one you cannot control, because it is asynchronous. You decided to log information about
163
+ > this error in a row in your database, that the un-asynchronous caller can check regularly to see if the row is indicated
164
+ > as erroneous. And then, the end user can be notified of their erroneous action.
165
+
166
+ So, how could you accomplish that? It's easy, use either:
167
+
168
+ 1. `discarded_exceptions` to enlist explicitly class of exception you don't want to log.
169
+ 2. `accepted_exceptions` to enlist those that Remexify will log.
170
+
171
+ If you want to log any error but specific exception, then during initialisation you define:
172
+
173
+ ```ruby
174
+ Remexify.setup do |config|
175
+ # other codes above
176
+ config.discarded_exceptions = [
177
+ ErrorToIgnore
178
+ ]
179
+ end
180
+ ```
181
+
182
+ However, if you want to command Remexify to log error only the one you have given it rights to, you do define:
183
+
184
+ ```ruby
185
+ Remexify.setup do |config|
186
+ config.accepted_exceptions = [
187
+ String,
188
+ SpecificError
189
+ ]
190
+ end
191
+ ```
192
+
193
+ As simply as that, however, be informed that `discarded_exceptions` takes precedence. So, if you define a class as being both
194
+ discarded and accepted, it will certainly be discarded. As simply as that, as always.
195
+
196
+ ## Associate logs to user
197
+
198
+ Consider this scenario
199
+
200
+ > You have a logged in user. But, your user did something that trigger an exception. But, not only that you want to
201
+ > log the exception, you also want to associate the exception with the user triggering the error.
202
+
203
+ Remexify from version 1.2.0 have the ability to record the user that trigger the error. When you log an error,
204
+ you can specify who owned the exception through `owned_by` attribute:
205
+
206
+ ```ruby
207
+ Remexify.error "Some serious error by user with id 1", owned_by: 1
208
+ ```
209
+
210
+ The code above will log an error, and associate the error with user id 1. You can specify the ID as string, or as integer,
211
+ but in the database it will be converted to String.
212
+
213
+ In case you needed to log any other information regarding to the ownership, Remexify provides you with 3 additional
214
+ attributes:
215
+
216
+ 1. `owned_param1`
217
+ 2. `owned_param2`
218
+ 3. `owned_param3`
219
+
220
+ Imagine that not only you have user table, you also have admin, and company table which all of them have the ability
221
+ to log into the database. You have user with ID 1, and an admin with ID 1 stored in their respective table. When error
222
+ is triggered by the admin ID 1, Remexify record the error as you command. However, when you are to retrieve errors triggered
223
+ by the admin ID 1, you have difficulty because there's also an error recorded with ID 1 but he is not an admin. but a user.
224
+ Obviously, storing mere ID may not help, you need to discriminate further.
225
+
226
+ Here is how you would remedy the problem:
227
+
228
+ ```ruby
229
+ Remexify.error "A serious error", owned_by: admin.id, owned_param1: admin.class.name
230
+ ```
231
+
232
+ So far so good, but how to retrieve errors by user?
233
+
234
+ As usual, we need to use `Remexify::Retrieve` whether you will retrieve `all()` or `today()` then you can specify further
235
+ certain variable such as the `level`, the `order` and so on. Then, to retrieve by the admin's ID:
236
+
237
+ ```ruby
238
+ Remexify::Retrieve.all owned_by: admin.id
239
+ ```
240
+
241
+ Or, when you want to retrieve all error triggered by an admin, assuming you log the class name as `owned_param1`:
242
+
243
+ ```ruby
244
+ Remexify::Retrieve.all owned_param1: admin.class.name
245
+ ```
246
+
247
+ You can as well combine both command:
248
+
249
+ ```ruby
250
+ Remexify::Retrieve.all owned_by: admin.id, owned_param1: admin.class.name
251
+ ```
252
+
253
+ A slightly complex error:
254
+
255
+ ```ruby
256
+ Remexify::Retrieve.all owned_param1: admin.class.name, level: ">= 200"
257
+ ```
258
+
259
+ ## Upgrading
260
+
261
+ 1. Upgrading from 1.0.0 or 1.1.0 to 1.2.0
262
+ 1. Delete your Remexify model (you may backup the table contents, if you still need it)
263
+ 2. Delete your Remexify model's migration
264
+ 3. Copy all the configuration you have for your Remexify.
265
+ 4. Delete your configuration file.
266
+ 5. `bundle install` the latest gem, and generate the models.
267
+ 6. Migrate the models.
268
+ 7. Reconfigure your Remexify configuration file (if you write custom configuration).
269
+ 8. Done.
270
+
130
271
  ## Contributing
131
272
 
132
273
  1. Fork it ( https://github.com/[my-github-username]/remexify/fork )
@@ -140,7 +281,12 @@ by Adam Pahlevi Baihaqi
140
281
  ## History
141
282
 
142
283
  - v.1.0.0 Initial version. Supporting PostgreSQL and Rails 3/4 to log info/error/warning/user-defined error level.
143
- - v.1.1.0
284
+ - [v.1.1.0](http://universitas-utara.herokuapp.com/post/34-rilis_remexify_1_1_0)
144
285
  - User can configure `censor_strings`, which would delete trace if its string contains one of the censored string.
145
286
  - Adding the level options, which would allow retriever to retrieve `all`/`today` log of certain level.
146
- - Increased accuracy: Error that occurred more than one time that involve unprintable object that have memory address, will have its memory address stripped only to display the class information.
287
+ - Increased accuracy: Error that occurred more than one time that involve unprintable object that have memory address, will have its memory address stripped only to display the class information.
288
+ - [v.1.2.0](#)
289
+ - User can configure `accepted_exceptions`
290
+ - User can configure `discarded_exceptions`
291
+ - Ability to associate log to specific user
292
+ - Ability to retrieve logs that owned by certain identifier_id (like, user's id)
@@ -12,16 +12,23 @@ module Remexify
12
12
 
13
13
  namespace "remexify"
14
14
 
15
+ # to avoid next migration numbers having the same exact identity
16
+ @secondth = 1
17
+
15
18
  def self.next_migration_number(path)
16
- Time.now.utc.strftime("%Y%m%d%H%M%S")
19
+ @secondth += 1
20
+ (Time.now.utc. + @secondth).strftime("%Y%m%d%H%M%S")
17
21
  end
18
22
 
19
23
  def copy_migration
20
24
  migration_template "create_remexify_lognotes.rb", "db/migrate/create_remexify_lognotes.rb"
25
+ migration_template "create_remexify_logowners.rb", "db/migrate/create_remexify_logowners.rb"
21
26
  end
22
27
 
23
28
  def generate_model
24
- invoke "active_record:model", [name], migration: false
29
+ # don't just call invoke without Rails::Generators because Thor task only run once.
30
+ Rails::Generators.invoke "active_record:model", [name, "--no-migration"]
31
+ Rails::Generators.invoke "active_record:model", ["#{name}Owners", "--no-migration"]
25
32
  # invoke "active_record:model", ["Remexify::Logs", "md5:string"], {migration: true, timestamps: true}
26
33
  end
27
34
 
@@ -0,0 +1,22 @@
1
+ class CreateRemexifyLogowners < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :<%= table_name %>_owners do |t|
4
+ t.string :log_md5, null: false
5
+ t.string :identifier_id, null: false
6
+
7
+ # this can be used to store additional info, such as the class of identifier_id above, or anything else
8
+ # you may read the gem documentation on how to use it.
9
+ t.string :param1
10
+ t.string :param2
11
+ t.string :param3
12
+ end
13
+ add_index :<%= table_name %>_owners, [:log_md5, :identifier_id], unique: true
14
+ end
15
+
16
+ def self.down
17
+ # we don't want to make assumption of your roll back, please
18
+ # by all mean edit it.
19
+ # drop_table :<%= table_name %>_owner
20
+ raise ActiveRecord::IrreversibleMigration
21
+ end
22
+ end
@@ -1,3 +1,8 @@
1
1
  Remexify.setup do |config|
2
2
  config.model = <%= class_name %>
3
+ config.model_owner = <%= class_name %>Owners
4
+
5
+ # uncomment lines bellow if you want to out list activerecord. add other similar lines
6
+ # for other libraries if you wish.
7
+ config.censor_strings << "activerecord"
3
8
  end
@@ -4,17 +4,18 @@ module Remexify
4
4
  module Retrieve
5
5
  class << self
6
6
  def all(options = {})
7
- logs = Remexify.config.model.all
8
- logs = Remexify::Retrieve::Filter.instance.order logs, options
9
- logs = Remexify::Retrieve::Filter.instance.level logs, options
7
+ logs = Remexify::Retrieve::Filter.owned_by(options)
8
+ logs = Remexify::Retrieve::Filter.order logs, options
9
+ logs = Remexify::Retrieve::Filter.level logs, options
10
10
 
11
11
  logs.to_a
12
12
  end
13
13
 
14
14
  def today(options = {})
15
- logs = Remexify.config.model.where(created_at: Time.now.beginning_of_day..Time.now.end_of_day).all
16
- logs = Remexify::Retrieve::Filter.instance.order logs, options
17
- logs = Remexify::Retrieve::Filter.instance.level logs, options
15
+ logs = Remexify::Retrieve::Filter.owned_by(options)
16
+ logs = logs.where(created_at: Time.now.beginning_of_day..Time.now.end_of_day)
17
+ logs = Remexify::Retrieve::Filter.order logs, options
18
+ logs = Remexify::Retrieve::Filter.level logs, options
18
19
 
19
20
  logs.to_a
20
21
  end
@@ -25,8 +26,9 @@ module Remexify
25
26
  end
26
27
  end
27
28
 
28
- class Remexify::Retrieve::Filter
29
- include Singleton
29
+ module Remexify::Retrieve::Filter
30
+
31
+ module_function
30
32
 
31
33
  def order(obj, options)
32
34
  if options[:order]
@@ -57,6 +59,25 @@ module Remexify
57
59
  end
58
60
  obj
59
61
  end
62
+
63
+ def owned_by(options)
64
+ if options[:owned_by] || options[:owned_param1] || options[:owned_param2] || options[:owned_param3]
65
+ if options[:owned_by]
66
+ my_logs = Remexify.config.model_owner.where(identifier_id: options.fetch(:owned_by))
67
+ else
68
+ my_logs = Remexify.config.model_owner.all
69
+ end
70
+ opkeys = options.keys
71
+ my_logs = my_logs.where(param1: options[:owned_param1]) if opkeys.include? :owned_param1
72
+ my_logs = my_logs.where(param2: options[:owned_param2]) if opkeys.include? :owned_param2
73
+ my_logs = my_logs.where(param3: options[:owned_param3]) if opkeys.include? :owned_param3
74
+ my_logs = my_logs.pluck(:log_md5)
75
+ owned_logs = Remexify.config.model.where(md5: my_logs).all
76
+ else
77
+ owned_logs = Remexify.config.model.all
78
+ end
79
+ owned_logs
80
+ end
60
81
  end
61
82
 
62
83
  class << self
@@ -3,9 +3,21 @@ $cached_error = []
3
3
  module Remexify
4
4
  class << self
5
5
  # options = class, method, line, file, params/param/parameters, desc/description
6
- # extract_params_from, object
6
+ # extract_params_from, object, owned_by, owned_param1, owned_param2, owned_param3
7
7
  def write(level, message_object, options = {})
8
8
  if (message_object.is_a?(StandardError) || message_object.is_a?(RuntimeError)) && message_object.already_logged
9
+ # do not log exception that has been logged
10
+ return
11
+ end
12
+
13
+ if Remexify.config.discarded_exceptions.include? message_object.class
14
+ # do not log exception that is explicitly discarded
15
+ return
16
+ end
17
+
18
+ if Remexify.config.accepted_exceptions.any? && !Remexify.config.accepted_exceptions.include?(message_object.class)
19
+ # do not log exception when accepted_exceptions has member and that, the class of the message_object
20
+ # is not one of the member of the accepted exceptions
9
21
  return
10
22
  end
11
23
 
@@ -70,7 +82,10 @@ module Remexify
70
82
  # so: #<#<Class:0x007f9492c00430>:0x007f9434ccab> will just be #<#<Class>>
71
83
  message = message.gsub(/:0x[0-9a-fA-F]+/i, "")
72
84
  hashed = "#{message}#{class_name}"
85
+ # do not quote md5 directly, it is used to query .where
73
86
  md5 = Digest::MD5.hexdigest hashed
87
+ # the quoted version of md5, do not replace the original value
88
+ qmd5 = config.model.connection.quote md5
74
89
 
75
90
  # assure md5 is not yet exist, if exist, don't save
76
91
  log = config.model.where(md5: md5).first
@@ -78,13 +93,26 @@ module Remexify
78
93
  log.frequency += 1
79
94
  log.save
80
95
  else
81
- md5 = config.model.connection.quote md5
82
96
  message = config.model.connection.quote message
83
97
  backtrace = backtrace.blank? ? "null" : config.model.connection.quote(backtrace)
84
98
  class_name = config.model.connection.quote(class_name)
85
- method = options[:method].blank? ? "null" : config.model.connection.quote(options[:method])
86
- line = options[:line].blank? ? "null" : config.model.connection.quote(options[:line])
87
- file = options[:file].blank? ? "null" : config.model.connection.quote(options[:file])
99
+
100
+ method = line = file = "null"
101
+ if Kernel.respond_to? :caller_locations
102
+ # 2, 1 is the original caller, 2 is the method write() that is called in this very class.
103
+ _caller = Kernel.caller_locations(2, 1)[0]
104
+ method = options[:method].blank? ? _caller.base_label : options.fetch(:method)
105
+ line = options[:line].blank? ? _caller.lineno : options.fetch(:line)
106
+ file = options[:file].blank? ? _caller.absolute_path : options.fetch(:file)
107
+ else
108
+ method = options[:method] unless options[:method].blank?
109
+ line = options[:line] unless options[:line].blank?
110
+ file = options[:file] unless options[:file].blank?
111
+ end
112
+ method = config.model.connection.quote(method)
113
+ line = config.model.connection.quote(line)
114
+ file = config.model.connection.quote(file)
115
+
88
116
  parameters = options[:parameters].blank? ? "null" : config.model.connection.quote(options[:parameters].inspect)
89
117
  descriptions = options[:description].blank? ? "null" : config.model.connection.quote(options[:description])
90
118
  time_now = config.model.connection.quote(Time.now.strftime("%Y-%m-%d %H:%M:%S"))
@@ -98,7 +126,7 @@ module Remexify
98
126
  md5, level, message, backtrace,
99
127
  class_name, method_name, line, file_name,
100
128
  parameters, description, created_at, updated_at)
101
- VALUES (#{md5}, #{Integer level}, #{message}, #{backtrace}, #{class_name},
129
+ VALUES (#{qmd5}, #{Integer level}, #{message}, #{backtrace}, #{class_name},
102
130
  #{method}, #{line}, #{file}, #{parameters}, #{descriptions},
103
131
  #{time_now}, #{time_now});
104
132
  SQL
@@ -110,6 +138,22 @@ module Remexify
110
138
  message_object.already_logged = true
111
139
  end
112
140
 
141
+ # if owner_by is given, associate this log to the owned_by user
142
+ if !options[:owned_by].blank? && (config.model_owner < ActiveRecord::Base)
143
+ owned_by = config.model.connection.quote(options[:owned_by])
144
+ owned_param1 = config.model.connection.quote(options[:owned_param1])
145
+ owned_param2 = config.model.connection.quote(options[:owned_param2])
146
+ owned_param3 = config.model.connection.quote(options[:owned_param3])
147
+
148
+ config.model.connection.begin_transaction
149
+ config.model.connection.execute <<-SQL
150
+ INSERT INTO #{config.model_owner.table_name} (
151
+ log_md5, identifier_id, param1, param2, param3)
152
+ VALUES (#{qmd5}, #{owned_by}, #{owned_param1}, #{owned_param2}, #{owned_param3})
153
+ SQL
154
+ config.model.connection.commit_transaction
155
+ end
156
+
113
157
  nil # don't return anything for logging!
114
158
  end
115
159
 
@@ -1,3 +1,3 @@
1
1
  module Remexify
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.0"
3
3
  end
data/lib/remexify.rb CHANGED
@@ -10,10 +10,33 @@ module Remexify
10
10
  FATAL = 600
11
11
 
12
12
  class << self
13
+ attr_reader :already_initialized
14
+
13
15
  def setup
16
+ raise "Remexify: do not call setup the second time, use Remexify.config to modify changes if that cannot be made during setup phase" if @already_initialized
17
+
18
+ # initialisation
14
19
  config.model = nil
20
+ config.model_owner = nil
21
+
15
22
  config.censor_strings = []
23
+
24
+ # do not log exception of which class is listed.
25
+ config.discarded_exceptions = []
26
+
27
+ # log only exceptions of which class is listed inside.
28
+ config.accepted_exceptions = []
29
+
16
30
  yield config
31
+ @already_initialized = true
32
+
33
+ # warning if accepted_exceptions is defined but String is not included
34
+ if config.accepted_exceptions.any? && !config.accepted_exceptions.include?(String)
35
+ puts "REMEXIFY: You won't be able to log a String, because it is left out while you defined the `accepted_exceptions'"
36
+ end
37
+
38
+ # model must exists as ActiveRecord model. model_owner is not necessary to exists at all
39
+ raise "Remexify.config.model is not an ActiveRecord model" unless config.model < ActiveRecord::Base
17
40
  end
18
41
  end
19
42
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remexify
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Pahlevi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-02 00:00:00.000000000 Z
11
+ date: 2014-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -124,6 +124,7 @@ files:
124
124
  - Rakefile
125
125
  - lib/generators/remexify_generator.rb
126
126
  - lib/generators/templates/create_remexify_lognotes.rb
127
+ - lib/generators/templates/create_remexify_logowners.rb
127
128
  - lib/generators/templates/initialize_remexify.rb
128
129
  - lib/remexify.rb
129
130
  - lib/remexify/displayable_error.rb