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 +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
|