memorable 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +57 -31
- data/config/locales/en.yml +9 -0
- data/lib/generators/active_record/memorable_generator.rb +29 -0
- data/lib/generators/memorable/install_generator.rb +35 -0
- data/lib/generators/templates/memorable.rb.erb +6 -0
- data/lib/generators/templates/migration.rb.erb +23 -0
- data/lib/generators/templates/model.rb.erb +10 -0
- data/lib/memorable.rb +1 -6
- data/lib/memorable/controller.rb +23 -14
- data/lib/memorable/model.rb +18 -18
- data/lib/memorable/template_engine.rb +5 -30
- data/lib/memorable/template_engines/default.rb +11 -71
- data/lib/memorable/version.rb +1 -1
- data/memorable.gemspec +3 -3
- metadata +10 -5
- data/lib/memorable/templates/en_US.yml +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1c1a0cf58461321fd1ebd8a9f3a651f867bb724
|
4
|
+
data.tar.gz: 0410ce862905268bc71994f35993b5c67d2afc97
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9fdb08440094d599523551036dd01d97ac863de4b8463127bad6a253ef317fa0edfb9038fe130056009768f4195d42f4698b328447f99846250e498d1ab9797
|
7
|
+
data.tar.gz: bb705ce042ee5b337926b4e0c67f4062b2ff9cfb0e131f4289a168821462f9320e28bcbac8e8618b68e0ab2ed34a42feb53939aff70688db264f4e591f9d0fa1
|
data/README.md
CHANGED
@@ -31,6 +31,23 @@ gem install memorable-<VERSION>.gem
|
|
31
31
|
|
32
32
|
## Configuration
|
33
33
|
|
34
|
+
run:
|
35
|
+
|
36
|
+
$ rails g memorable:install MODELNAME
|
37
|
+
|
38
|
+
or ('journal' is the default name if not given one)
|
39
|
+
|
40
|
+
$ rails g memorable:install
|
41
|
+
|
42
|
+
This command will create 4 files for you to start with:
|
43
|
+
|
44
|
+
1. `db/migration/20150228032852_create_memorable_journal.rb`
|
45
|
+
2. `app/models/journal.rb`
|
46
|
+
3. `config/initializers/memorable.rb`
|
47
|
+
4. `config/locales/memorable.en.yml`
|
48
|
+
|
49
|
+
Or you can manually setup as follows:
|
50
|
+
|
34
51
|
### Initializer
|
35
52
|
|
36
53
|
Write these lines of code to your configuration file, for example, `memorable.rb`.
|
@@ -60,17 +77,13 @@ class CreateJournal < ActiveRecord::Migration
|
|
60
77
|
t.integer :resource_id
|
61
78
|
t.string :resource_type
|
62
79
|
t.text :meta
|
80
|
+
t.text :content
|
63
81
|
|
64
82
|
t.timestamps
|
65
83
|
end
|
66
84
|
|
67
85
|
add_index :journals, :user_id
|
68
86
|
add_index :journals, :resource_id
|
69
|
-
|
70
|
-
# If you are not using globalize, https://github.com/globalize/globalize,
|
71
|
-
# comment this line and add a field named content into your journals table.
|
72
|
-
# eg: t.text :content
|
73
|
-
Journal.create_translation_table! :content => :text
|
74
87
|
end
|
75
88
|
|
76
89
|
def down
|
@@ -78,9 +91,6 @@ class CreateJournal < ActiveRecord::Migration
|
|
78
91
|
remove_index :journals, :resource_id
|
79
92
|
|
80
93
|
drop_table :journals
|
81
|
-
|
82
|
-
# If you are not using globalize, comment this line
|
83
|
-
Journal.drop_translation_table!
|
84
94
|
end
|
85
95
|
end
|
86
96
|
```
|
@@ -97,12 +107,11 @@ Create a ActiveRecord Model, and you are all set.
|
|
97
107
|
|
98
108
|
```ruby
|
99
109
|
class Journal < ActiveRecord::Base
|
100
|
-
|
110
|
+
include Memorable::Model
|
101
111
|
|
102
|
-
|
112
|
+
attr_accessible :resource_id, :resource_type, :user_id, :meta, :content
|
103
113
|
|
104
|
-
|
105
|
-
translates :content, :fallbacks_for_empty_translations => true
|
114
|
+
store :meta
|
106
115
|
|
107
116
|
belongs_to :user
|
108
117
|
belongs_to :resource, polymorphic: true, :touch => true
|
@@ -111,30 +120,47 @@ end
|
|
111
120
|
|
112
121
|
## Usage
|
113
122
|
|
123
|
+
Specify which actions you would like to log:
|
124
|
+
|
125
|
+
```ruby
|
126
|
+
class ContactsController < ApplicationController
|
127
|
+
memorize :only => [:create, :update]
|
128
|
+
end
|
129
|
+
```
|
130
|
+
|
131
|
+
`memorize` method support following options:
|
132
|
+
|
133
|
+
```
|
134
|
+
- only, except # It's used to specify action names to log
|
135
|
+
- resource_name # Use to detect resource in special case
|
136
|
+
- if, unless # Add condition wheter to log or not
|
137
|
+
```
|
138
|
+
|
114
139
|
Add your own templates using yaml, this gem ships with a default yml template engine.
|
115
140
|
|
116
|
-
Put your templates under `
|
141
|
+
Put your templates under `config/locales` directory of you project, and name them with something like `memorable.en.yml`
|
117
142
|
|
118
143
|
Here's an example of a typical template file
|
119
144
|
|
120
145
|
```
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
146
|
+
en:
|
147
|
+
memorable:
|
148
|
+
defaults:
|
149
|
+
create:
|
150
|
+
base: "%{resource_type} %{resource_id} created."
|
151
|
+
update:
|
152
|
+
base: "%{resource_type} %{resource_id} updated."
|
153
|
+
destroy:
|
154
|
+
base: "%{resource_type} %{resource_id} deleted."
|
155
|
+
|
156
|
+
contacts:
|
157
|
+
create:
|
158
|
+
base: "Added vendor %{name} to Vendor Library."
|
159
|
+
update:
|
160
|
+
base: "Edited information for Vendor %{name}."
|
161
|
+
name: "Change Vendor Name form %{previous_name} to %{name}."
|
162
|
+
destroy:
|
163
|
+
base: "Deleted Vendor %{name}."
|
138
164
|
```
|
139
165
|
|
140
166
|
As you can see, controller_name and action_name are used as the first two levels of template_keys.
|
@@ -153,7 +179,7 @@ class ContactsController < ApplicationController
|
|
153
179
|
private
|
154
180
|
|
155
181
|
def memorable_update
|
156
|
-
if @contact.previous_changes.key?
|
182
|
+
if @contact.previous_changes.key? :name
|
157
183
|
{template_key: 'name', company_email: @contact.company.email}
|
158
184
|
end
|
159
185
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'rails/generators/active_record'
|
2
|
+
|
3
|
+
module ActiveRecord
|
4
|
+
module Generators
|
5
|
+
class MemorableGenerator < ActiveRecord::Generators::Base
|
6
|
+
source_root File.expand_path("../../templates", __FILE__)
|
7
|
+
|
8
|
+
desc "Create a migration to create a table for logging. "
|
9
|
+
|
10
|
+
def generate_migration
|
11
|
+
migration_template "migration.rb.erb", "db/migrate/#{migration_file_name}"
|
12
|
+
end
|
13
|
+
|
14
|
+
protected
|
15
|
+
|
16
|
+
def migration_name
|
17
|
+
"create_memorable_#{table_name}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def migration_file_name
|
21
|
+
"#{migration_name}.rb"
|
22
|
+
end
|
23
|
+
|
24
|
+
def migration_class_name
|
25
|
+
migration_name.camelize
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
|
3
|
+
module Memorable
|
4
|
+
module Generators
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
source_root File.expand_path("../../templates", __FILE__)
|
7
|
+
|
8
|
+
desc "Creates a Memorable initializer and copy locale files to your application."
|
9
|
+
|
10
|
+
argument :model_name, :type => :string, :default => "journal",
|
11
|
+
:desc => "The name of logging model.",
|
12
|
+
:banner => "Logging model name, eg: journal"
|
13
|
+
|
14
|
+
def invoke_migration_generator
|
15
|
+
generate "active_record:memorable #{model_name.pluralize}"
|
16
|
+
end
|
17
|
+
|
18
|
+
def copy_model_file
|
19
|
+
template "model.rb.erb", "app/models/#{model_name}.rb"
|
20
|
+
end
|
21
|
+
|
22
|
+
def copy_initializer
|
23
|
+
template "memorable.rb.erb", "config/initializers/memorable.rb"
|
24
|
+
end
|
25
|
+
|
26
|
+
def copy_locale
|
27
|
+
copy_file "../../../config/locales/en.yml", "config/locales/memorable.en.yml"
|
28
|
+
end
|
29
|
+
|
30
|
+
# def show_readme
|
31
|
+
# readme "README" if behavior == :invoke
|
32
|
+
# end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class <%= migration_class_name %> < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
create_table :<%= table_name %> do |t|
|
4
|
+
t.integer :user_id
|
5
|
+
t.integer :resource_id
|
6
|
+
t.string :resource_type
|
7
|
+
t.text :meta
|
8
|
+
t.text :content
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
|
13
|
+
add_index :<%= table_name %>, :user_id
|
14
|
+
add_index :<%= table_name %>, :resource_id
|
15
|
+
end
|
16
|
+
|
17
|
+
def down
|
18
|
+
remove_index :<%= table_name %>, :user_id
|
19
|
+
remove_index :<%= table_name %>, :resource_id
|
20
|
+
|
21
|
+
drop_table :<%= table_name %>
|
22
|
+
end
|
23
|
+
end
|
data/lib/memorable.rb
CHANGED
@@ -15,14 +15,9 @@ module Memorable
|
|
15
15
|
|
16
16
|
def setup(&block)
|
17
17
|
yield config if block_given?
|
18
|
-
|
19
|
-
config.journals_model.send :include, Memorable::Model
|
20
18
|
ActionController::Base.send :include, Memorable::Controller
|
21
19
|
|
22
|
-
config.
|
23
|
-
config.template_engine ||= DefaultYAMLEngine
|
24
|
-
|
25
|
-
config.template_engine.load!
|
20
|
+
config.template_engine ||= DefaultYAMLEngine
|
26
21
|
end
|
27
22
|
end
|
28
23
|
end
|
data/lib/memorable/controller.rb
CHANGED
@@ -3,7 +3,11 @@ module Memorable
|
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
5
|
included do
|
6
|
-
|
6
|
+
if Rails::VERSION::MAJOR > 3
|
7
|
+
append_after_action :memorize_callback
|
8
|
+
else
|
9
|
+
append_after_filter :memorize_callback
|
10
|
+
end
|
7
11
|
end
|
8
12
|
|
9
13
|
private
|
@@ -12,10 +16,10 @@ module Memorable
|
|
12
16
|
return unless memorable?
|
13
17
|
|
14
18
|
# prepare locals for action
|
15
|
-
|
19
|
+
options = extract_memorable_options
|
16
20
|
|
17
21
|
# write to database
|
18
|
-
Memorable.config.journals_model.
|
22
|
+
Memorable.config.journals_model.create_with_params!(options)
|
19
23
|
|
20
24
|
rescue Exception => e
|
21
25
|
raise e if Rails.env.development? # for debug
|
@@ -28,30 +32,35 @@ module Memorable
|
|
28
32
|
response.successful?
|
29
33
|
end
|
30
34
|
|
31
|
-
def
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
35
|
+
def extract_memorable_options
|
36
|
+
options = ActiveSupport::HashWithIndifferentAccess.new ({
|
37
|
+
user_id: current_user.try(:id),
|
38
|
+
meta: {
|
39
|
+
controller: controller_name,
|
40
|
+
action: action_name
|
41
|
+
}
|
36
42
|
})
|
37
43
|
|
38
44
|
if memorable_resource
|
39
|
-
|
40
|
-
|
41
|
-
|
45
|
+
resource_previous = Hash[memorable_resource.previous_changes.map {|key, value| ["previous_#{key}", value[0]]}]
|
46
|
+
resource_attributes = memorable_resource.attributes
|
47
|
+
resource_options = {
|
42
48
|
resource_id: memorable_resource.id,
|
43
49
|
resource_type: memorable_resource.class.to_s
|
44
|
-
}
|
50
|
+
}
|
51
|
+
|
52
|
+
options[:meta].merge!(resource_previous).merge!(resource_attributes).merge!(resource_options)
|
53
|
+
options.merge!(resource_options)
|
45
54
|
end
|
46
55
|
|
47
56
|
custom_method_name = "memorable_#{action_name}"
|
48
57
|
|
49
58
|
if respond_to? custom_method_name, true
|
50
59
|
custom_locals = self.send custom_method_name
|
51
|
-
|
60
|
+
options[:meta].merge!(custom_locals) if custom_locals.is_a?(Hash)
|
52
61
|
end
|
53
62
|
|
54
|
-
|
63
|
+
options
|
55
64
|
end
|
56
65
|
|
57
66
|
def memorable_resource
|
data/lib/memorable/model.rb
CHANGED
@@ -3,33 +3,33 @@ module Memorable
|
|
3
3
|
module Model
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
|
-
def write_content(
|
7
|
-
|
6
|
+
def write_content(locals)
|
7
|
+
self.content = memorable_content(locals)
|
8
|
+
end
|
8
9
|
|
9
|
-
|
10
|
-
I18n.locale = template[0]
|
11
|
-
self.content = template[1]
|
12
|
-
end
|
10
|
+
private
|
13
11
|
|
14
|
-
|
12
|
+
def memorable_content(*args)
|
13
|
+
Memorable.config.template_engine.run(*args)
|
15
14
|
end
|
16
15
|
|
17
16
|
module ClassMethods
|
18
|
-
def
|
19
|
-
|
20
|
-
|
17
|
+
def create_with_params!(params={})
|
18
|
+
instance = self.build_with_params(params)
|
19
|
+
instance.save!
|
21
20
|
end
|
22
21
|
|
23
|
-
def
|
24
|
-
|
22
|
+
def build_with_params(params)
|
23
|
+
instance = self.new
|
25
24
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
25
|
+
# set attributes and meta data if possible
|
26
|
+
params.each do |key, value|
|
27
|
+
instance.send "#{key}=", value if instance.respond_to?(key)
|
28
|
+
end
|
30
29
|
|
31
|
-
|
32
|
-
|
30
|
+
# render content with meta data
|
31
|
+
instance.write_content(params[:meta])
|
32
|
+
instance
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
@@ -1,42 +1,17 @@
|
|
1
|
-
require 'singleton'
|
2
|
-
|
3
1
|
module Memorable
|
4
2
|
|
5
3
|
# This is an abstract class, do not use it directly. Inherit from this class
|
6
|
-
# and implement custom
|
4
|
+
# and implement custom render medthods.
|
7
5
|
class TemplateEngine
|
8
|
-
include Singleton
|
9
|
-
|
10
|
-
# Class Methods
|
11
|
-
# --------------------------
|
12
|
-
# Override this method in subclass
|
13
|
-
def self.load!
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.assemble(*args)
|
17
|
-
instance.assemble(*args)
|
18
|
-
end
|
19
|
-
|
20
|
-
# Instance Methods
|
21
|
-
# --------------------------
|
22
|
-
#
|
23
|
-
attr_reader :load_path, :templates
|
24
6
|
|
25
|
-
def
|
26
|
-
|
27
|
-
@templates = {}
|
28
|
-
end
|
29
|
-
|
30
|
-
def assemble(options)
|
31
|
-
parse(options[:controller], options[:action], options[:template_key]).map do |locale, template|
|
32
|
-
content = render(template, options)
|
33
|
-
[locale, content]
|
34
|
-
end
|
7
|
+
def self.run(*args)
|
8
|
+
self.new.render(*args)
|
35
9
|
end
|
36
10
|
|
37
11
|
# Override this method in subclass
|
38
|
-
def
|
12
|
+
def render(*args)
|
39
13
|
end
|
14
|
+
|
40
15
|
end
|
41
16
|
end
|
42
17
|
|
@@ -1,79 +1,19 @@
|
|
1
|
-
require 'yaml'
|
2
|
-
|
3
1
|
module Memorable
|
4
|
-
class DefaultYAMLEngine < TemplateEngine
|
5
|
-
|
6
|
-
# Class Methods
|
7
|
-
# --------------------------
|
8
|
-
# load yaml templates
|
9
|
-
def self.load!
|
10
|
-
pattern = self.pattern_from I18n.available_locales
|
11
|
-
|
12
|
-
add("memorable/templates/#{pattern}.yml", Memorable.config.default_templates_directory)
|
13
|
-
add("app/views/memorable/#{pattern}.yml", Rails.root) if defined?(Rails)
|
14
|
-
|
15
|
-
instance.store_templates
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.add(pattern, base_dir)
|
19
|
-
files = Dir[File.join(base_dir, pattern)]
|
20
|
-
instance.load_path.concat(files)
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.pattern_from(args)
|
24
|
-
array = Array(args || [])
|
25
|
-
array.blank? ? '*' : "{#{array.join ','}}"
|
26
|
-
end
|
27
|
-
|
28
|
-
# Instance Methods
|
29
|
-
# --------------------------
|
30
|
-
#
|
31
|
-
def store_templates
|
32
|
-
load_path.each do |filename|
|
33
|
-
locale = File.basename(filename, ".yml")
|
34
|
-
data = load_yml filename
|
35
|
-
templates[locale.to_sym] = data
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def parse(controller, action, sub_key)
|
40
|
-
sub_key ||= 'base'
|
41
|
-
raw_templates = catch(:template_found) do
|
42
|
-
parse_entry(controller, action, sub_key)
|
43
|
-
parse_entry(controller, 'other', sub_key)
|
44
|
-
parse_entry('defaults', action, sub_key)
|
45
|
-
parse_entry('defaults', 'other', sub_key)
|
46
|
-
nil
|
47
|
-
end
|
48
|
-
raise TemplateNotFound, "Template: #{controller} #{action} #{sub_key} not found" unless raw_templates
|
49
|
-
raw_templates
|
50
|
-
end
|
51
2
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
else
|
56
|
-
template
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
private
|
3
|
+
# This is the default engine, which uses I18n to find the template and
|
4
|
+
# to interpolate variables.
|
5
|
+
class DefaultYAMLEngine < TemplateEngine
|
61
6
|
|
62
|
-
|
63
|
-
|
7
|
+
def render(locals)
|
8
|
+
controller, action, sub_key = locals[:controller], locals[:action], locals[:template_key] || 'base'
|
9
|
+
@key ||= "memorable.#{controller}.#{action}.#{sub_key}"
|
64
10
|
begin
|
65
|
-
|
66
|
-
rescue
|
67
|
-
raise
|
11
|
+
I18n.t! @key, locals
|
12
|
+
rescue I18n::MissingTranslationData => e
|
13
|
+
raise e if @key.start_with?("memorable.defaults")
|
14
|
+
@key = "memorable.defaults.#{action}.#{sub_key}"
|
15
|
+
retry
|
68
16
|
end
|
69
17
|
end
|
70
|
-
|
71
|
-
def parse_entry(controller, action, sub_key)
|
72
|
-
raw_templates = templates.map do |locale, template_data|
|
73
|
-
template = template_data[controller][action][sub_key] rescue nil
|
74
|
-
template ? [locale, template] : nil
|
75
|
-
end.compact
|
76
|
-
throw :template_found, raw_templates unless raw_templates.blank?
|
77
|
-
end
|
78
18
|
end
|
79
19
|
end
|
data/lib/memorable/version.rb
CHANGED
data/memorable.gemspec
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
4
3
|
require 'memorable/version'
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
6
|
spec.name = "memorable"
|
8
7
|
spec.version = Memorable::VERSION
|
9
|
-
spec.authors = ["
|
8
|
+
spec.authors = ["Xiaoguang Chen"]
|
10
9
|
spec.email = ["xg.chen87@gmail.com"]
|
11
10
|
spec.summary = "A Rails logging system based on actions."
|
12
11
|
spec.description = %q{A Rails logging system based on actions, instead of
|
@@ -19,6 +18,7 @@ Gem::Specification.new do |spec|
|
|
19
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
20
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
21
20
|
spec.require_paths = ["lib"]
|
21
|
+
spec.required_ruby_version = '>= 1.9.3'
|
22
22
|
|
23
23
|
spec.add_dependency 'activesupport', '>= 3.2.8', "< 5.0"
|
24
24
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: memorable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Xiaoguang Chen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -71,6 +71,12 @@ files:
|
|
71
71
|
- Gemfile
|
72
72
|
- LICENSE
|
73
73
|
- README.md
|
74
|
+
- config/locales/en.yml
|
75
|
+
- lib/generators/active_record/memorable_generator.rb
|
76
|
+
- lib/generators/memorable/install_generator.rb
|
77
|
+
- lib/generators/templates/memorable.rb.erb
|
78
|
+
- lib/generators/templates/migration.rb.erb
|
79
|
+
- lib/generators/templates/model.rb.erb
|
74
80
|
- lib/memorable.rb
|
75
81
|
- lib/memorable/controller.rb
|
76
82
|
- lib/memorable/error.rb
|
@@ -78,7 +84,6 @@ files:
|
|
78
84
|
- lib/memorable/registration.rb
|
79
85
|
- lib/memorable/template_engine.rb
|
80
86
|
- lib/memorable/template_engines/default.rb
|
81
|
-
- lib/memorable/templates/en_US.yml
|
82
87
|
- lib/memorable/version.rb
|
83
88
|
- memorable.gemspec
|
84
89
|
homepage: https://github.com/serco-chen/memorable
|
@@ -93,7 +98,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
93
98
|
requirements:
|
94
99
|
- - ">="
|
95
100
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
101
|
+
version: 1.9.3
|
97
102
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
103
|
requirements:
|
99
104
|
- - ">="
|