remexify 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.idea/remexify.iml +4 -1
- data/.idea/workspace.xml +217 -211
- data/README.md +155 -9
- data/lib/generators/remexify_generator.rb +9 -2
- data/lib/generators/templates/create_remexify_logowners.rb +22 -0
- data/lib/generators/templates/initialize_remexify.rb +5 -0
- data/lib/remexify/remexify_retriever.rb +29 -8
- data/lib/remexify/remexify_writer.rb +50 -6
- data/lib/remexify/version.rb +1 -1
- data/lib/remexify.rb +23 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 51ce361fa194fcf58a8f1051da6147a7eb3f76af
|
|
4
|
+
data.tar.gz: 113e83eee6cb46fb6f625aa0345edbf1e6856145
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
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="
|
|
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="
|
|
83
|
-
<caret line="
|
|
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="
|
|
90
|
-
<entry file="file://$PROJECT_DIR$/lib/
|
|
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="
|
|
93
|
-
<caret line="
|
|
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="
|
|
100
|
-
<entry file="file://$PROJECT_DIR$/
|
|
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.
|
|
103
|
-
<caret line="
|
|
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="
|
|
110
|
-
<entry file="file://$PROJECT_DIR$/lib/remexify/
|
|
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="
|
|
113
|
-
<caret line="
|
|
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="
|
|
154
|
-
<option name="y" value="
|
|
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	FILE	file:///Users/works/Documents/OF/RUBY-211/remexify/remexify.gemspec gemspe	FILE	file:///Users/works/Documents/OF/RUBY-211/remexify/remexify.gemspec gem	FILE	file:///Users/works/Documents/OF/RUBY-211/remexify/remexify.gemspec version	FILE	file:///Users/works/Documents/OF/RUBY-211/remexify/lib/remexify/version.rb" />
|
|
244
|
+
<property name="SearchEverywhereHistoryKey" value="versio	FILE	file:///Users/works/Documents/OF/RUBY-211/remexify/lib/remexify/version.rb retrie	FILE	file:///Users/works/Documents/OF/RUBY-211/remexify/lib/remexify/remexify_retriever.rb remexifyre	FILE	file:///Users/works/Documents/OF/RUBY-211/remexify/lib/remexify/remexify_retriever.rb remexify	FILE	file:///Users/works/Documents/OF/RUBY-211/remexify/lib/remexify/remexify_writer.rb log	FILE	file:///Users/works/Documents/OF/RUBY-211/remexify/lib/generators/templates/create_remexify_lognotes.rb own	FILE	file:///Users/works/Documents/OF/RUBY-211/remexify/lib/generators/templates/create_remexify_logowners.rb initiali	FILE	file:///Users/works/Documents/OF/RUBY-211/remexify/lib/generators/templates/initialize_remexify.rb remexify_r	FILE	file:///Users/works/Documents/OF/RUBY-211/remexify/lib/remexify/remexify_retriever.rb readme	FILE	file:///Users/works/Documents/OF/RUBY-211/remexify/README.md retrieve	FILE	file:///Users/works/Documents/OF/RUBY-211/remexify/lib/remexify/remexify_retriever.rb gemsp	FILE	file:///Users/works/Documents/OF/RUBY-211/remexify/remexify.gemspec gemspe	FILE	file:///Users/works/Documents/OF/RUBY-211/remexify/remexify.gemspec gem	FILE	file:///Users/works/Documents/OF/RUBY-211/remexify/remexify.gemspec version	FILE	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="
|
|
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="
|
|
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.
|
|
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.
|
|
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="
|
|
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://$
|
|
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.
|
|
744
|
-
<caret line="
|
|
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$/
|
|
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.
|
|
751
|
-
<caret line="
|
|
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$/
|
|
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="
|
|
758
|
-
<caret line="
|
|
759
|
-
|
|
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.
|
|
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/
|
|
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="
|
|
782
|
-
<caret line="
|
|
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/
|
|
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="
|
|
790
|
-
<caret line="
|
|
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="
|
|
798
|
-
<caret line="
|
|
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$/
|
|
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.
|
|
808
|
-
<caret line="
|
|
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
|
|
4
|
-
|
|
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
|
-
|
|
11
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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.
|
|
8
|
-
logs = Remexify::Retrieve::Filter.
|
|
9
|
-
logs = Remexify::Retrieve::Filter.
|
|
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.
|
|
16
|
-
logs =
|
|
17
|
-
logs = Remexify::Retrieve::Filter.
|
|
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
|
-
|
|
29
|
-
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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 (#{
|
|
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
|
|
data/lib/remexify/version.rb
CHANGED
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.
|
|
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-
|
|
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
|