rails3_assist 0.2.5 → 0.2.7
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.
- data/README.markdown +152 -35
- data/VERSION +1 -1
- data/lib/rails3_assist/directory.rb +9 -0
- data/lib/rails3_assist/file/special.rb +8 -0
- data/lib/rails3_assist/files.rb +1 -1
- data/lib/rails3_assist/rspec/configure.rb +8 -1
- data/lib/rails3_assist.rb +2 -2
- data/rails3_assist.gemspec +1 -3
- data/spec/rails3_assist/artifact/files_spec.rb +3 -2
- data/spec/rails3_assist/directory_spec.rb +2 -1
- data/spec/rails3_assist/file_spec.rb +1 -1
- data/spec/rails3_assist/files_spec.rb +3 -2
- metadata +2 -4
- data/lib/rails3_assist/rspec/matchers/have_app_config.rb +0 -49
- data/lib/rails3_assist/rspec/matchers/have_special_file.rb +0 -0
data/README.markdown
CHANGED
@@ -1,77 +1,194 @@
|
|
1
1
|
# Rails3 Assistant
|
2
2
|
|
3
|
-
Includes various helpers to assist operating on a Rails 3 application
|
3
|
+
Includes various helpers to assist operating on a Rails 3 application.
|
4
4
|
|
5
|
-
##
|
5
|
+
## Install
|
6
6
|
|
7
|
-
|
7
|
+
<code>gem install rails3_assist</code>
|
8
8
|
|
9
|
-
|
10
|
-
* directory
|
11
|
-
|
12
|
-
## Rails Artifacts
|
13
|
-
|
14
|
-
Rails assist also includes various artifact libraries to help operate on different Rails 3 artifacts.
|
15
|
-
These assist libraries mainly contain some common CRUD (Create, Read, Update, Delete) operations.
|
16
|
-
The same API is shared in all the artifact assist libraries.
|
17
|
-
The following is a list of the main API, including an alias for each method.
|
18
|
-
|
19
|
-
* create_[x] - new_[x])
|
20
|
-
* insert_into_[x] - update_[x]
|
21
|
-
* read_model - [x]_content
|
22
|
-
* remove_[x] - delete_[x]
|
23
|
-
* remove_[x]s - delete_[x]s
|
9
|
+
## File Assistants
|
24
10
|
|
25
|
-
|
11
|
+
There are file assistants for the following Rails 3 artifacts:
|
12
|
+
* locale
|
13
|
+
* javascript
|
14
|
+
* stylesheet
|
15
|
+
* controller
|
16
|
+
* helper
|
17
|
+
* view
|
18
|
+
* model
|
19
|
+
* mailer
|
20
|
+
* observer
|
21
|
+
* permit
|
22
|
+
* view
|
26
23
|
|
24
|
+
* [name]_file
|
25
|
+
* [name]_files
|
26
|
+
* create_[name]_file
|
27
|
+
* remove_[name]_file
|
28
|
+
* remove_all__[name]s
|
29
|
+
* remove_[name]s
|
30
|
+
|
31
|
+
Example usage:
|
32
|
+
|
33
|
+
<pre>
|
34
|
+
remove_locales 'blip.en', 'blip.dk'
|
35
|
+
remove_all_stylesheets
|
36
|
+
create_stylesheet 'my_styles.css' do
|
37
|
+
%{
|
38
|
+
.mystyle {font: bold;}
|
39
|
+
}
|
40
|
+
end
|
41
|
+
remove_stylesheet 'my_styles.css'
|
42
|
+
|
43
|
+
locale_files
|
44
|
+
locale_files 'permit.dk'
|
45
|
+
locale_files /permit/ do |files|
|
46
|
+
# ...
|
47
|
+
end
|
48
|
+
|
49
|
+
view_files :person
|
50
|
+
erb_view_files(:user).file_names.should include 'show.html.erb'
|
51
|
+
haml_view_files(:user)
|
52
|
+
</pre>
|
53
|
+
|
54
|
+
## Directory Assistants
|
55
|
+
|
56
|
+
There are dir helpers for the following
|
57
|
+
|
58
|
+
* app
|
59
|
+
* config
|
60
|
+
* db
|
61
|
+
* public
|
62
|
+
* lib
|
63
|
+
* log
|
64
|
+
* doc
|
65
|
+
* test
|
66
|
+
* spec
|
67
|
+
|
68
|
+
* locale
|
69
|
+
* initializer
|
70
|
+
* javascript
|
71
|
+
* stylesheet
|
27
72
|
* controller
|
28
73
|
* helper
|
74
|
+
* view
|
75
|
+
* model
|
29
76
|
* mailer
|
30
|
-
* migration (pending!)
|
31
|
-
* model (insert bug!)
|
32
77
|
* observer
|
78
|
+
* permit
|
33
79
|
* view
|
34
|
-
* permit (NEW - used with cancan)
|
35
80
|
|
36
|
-
|
81
|
+
Example usage:
|
82
|
+
|
83
|
+
<pre>
|
84
|
+
config_dir
|
85
|
+
observer_dir_
|
86
|
+
db_dir :root_path => MY_RAILS_ROOT
|
87
|
+
rails_dir_for :migrations
|
88
|
+
db_dir_for :migrations
|
89
|
+
config_dir_for :initializers, :root_path => MY_RAILS_ROOT
|
90
|
+
app_dir_for :models
|
91
|
+
</pre>
|
92
|
+
|
93
|
+
## Special Rails mutators
|
94
|
+
|
95
|
+
* insert_application_config
|
96
|
+
* insert_before_application_init
|
97
|
+
* insert_after_application_init
|
98
|
+
|
99
|
+
Special file helpers:
|
100
|
+
|
101
|
+
* application_file
|
102
|
+
* environment_file
|
103
|
+
* seed_file
|
37
104
|
|
38
|
-
*
|
39
|
-
*
|
105
|
+
* read_[special]_file
|
106
|
+
* remove_[special]_file
|
107
|
+
* append_to_[special]_file
|
108
|
+
* replace_in_[special]_file :where => ... :with => ...
|
109
|
+
* remove_from_[special]_file
|
40
110
|
|
41
|
-
|
42
|
-
|
111
|
+
Example
|
112
|
+
|
113
|
+
<pre>
|
114
|
+
remove_from_application_file /config.root = (\w+?)/
|
115
|
+
append_to_seed_file do
|
116
|
+
%{
|
117
|
+
Person.new :name => 'Mike'
|
118
|
+
}
|
119
|
+
end
|
120
|
+
</pre>
|
43
121
|
|
44
122
|
### Usage
|
45
123
|
|
46
|
-
Set the root if not already set, then use the special assist
|
124
|
+
Set the root if not already set, then use the special assist methods to include the modules with all the goodies!
|
125
|
+
See the *Assistants* section below for more info on how to do this.
|
47
126
|
|
48
127
|
### Rails root
|
49
128
|
|
50
|
-
You have to set the class variable <code>Rails::Assist::
|
51
|
-
|
129
|
+
You have to set the class variable <code>Rails::Assist::Directory.rails_root</code> to the location of your Rails root directory if you are using this gem outside of Rails, fx for testing purposes or something.
|
130
|
+
|
131
|
+
Note: If this variable is not set, it will assume it is used in a Rails app and therefore assume the root is <code>Rails.root</code>.
|
52
132
|
|
53
|
-
In the specs I use the *
|
133
|
+
In the specs of this projct, I use the *rails_root* class variable to avoid having to set a Rails app specific variable, which I deemed unnecessary for most of the tests.
|
54
134
|
|
55
|
-
###
|
135
|
+
### Assistants
|
56
136
|
|
57
137
|
Generators are often designed to create Rails 3 artifacts or update existing artifacts. It's often useful to include one or more Rails 3 artifact assistants along
|
58
138
|
with a generator assistant (see above).
|
59
139
|
|
60
140
|
This combination greatly facilitates your work in developing the generator, as much of the heavy lifting will be done for you in the assistants.
|
141
|
+
|
61
142
|
To use a specific assistant/helper, simply call:
|
62
143
|
|
63
144
|
*assist_with [list of assistant symbols]*
|
64
145
|
|
65
146
|
Example:
|
66
147
|
|
67
|
-
<code>assist_with :
|
148
|
+
<code>assist_with :controller, :model, :view, :permit</code>
|
68
149
|
|
69
150
|
Aliases: *use_helpers* and *use_helper*
|
70
151
|
|
71
|
-
|
152
|
+
Available helpers:
|
153
|
+
|
154
|
+
Artifacts
|
155
|
+
* controller
|
156
|
+
* model
|
157
|
+
* view
|
158
|
+
* helper
|
159
|
+
* observer
|
160
|
+
* mailer
|
161
|
+
* migration
|
162
|
+
* permit
|
163
|
+
|
164
|
+
Misc.
|
165
|
+
* file
|
166
|
+
* files
|
167
|
+
* directory
|
168
|
+
|
169
|
+
### Using Assistants
|
170
|
+
|
171
|
+
<pre>
|
172
|
+
class MyGenerator < Rails::Generators:NamedBase
|
173
|
+
extend Rails3::Assist::UseMacro
|
174
|
+
|
175
|
+
use_orm :active_record
|
176
|
+
use_helpers :file, :files, :controller, :observer, :migration
|
177
|
+
...
|
178
|
+
end
|
179
|
+
</pre>
|
180
|
+
|
181
|
+
### Assistant in RSpec
|
72
182
|
|
73
|
-
|
183
|
+
The assistants are preconfigured to be available within RSpec constructs.
|
74
184
|
|
185
|
+
<pre>
|
186
|
+
describe 'My Controller' do
|
187
|
+
use_helpers :directory, :files, :helper, :mailer
|
188
|
+
...
|
189
|
+
end
|
190
|
+
</pre>
|
191
|
+
|
75
192
|
## Note on Patches/Pull Requests
|
76
193
|
|
77
194
|
* Fork the project.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.7
|
@@ -5,11 +5,20 @@ module Rails3::Assist
|
|
5
5
|
module Directory
|
6
6
|
class << self
|
7
7
|
attr_accessor :rails_root
|
8
|
+
|
9
|
+
def method_missing(sym, *args, &block)
|
10
|
+
Rails3::Assist::Artifact::Directory.send sym
|
11
|
+
end
|
8
12
|
end
|
9
13
|
|
10
14
|
include Root
|
15
|
+
extend Root
|
16
|
+
|
11
17
|
include App
|
18
|
+
extend App
|
19
|
+
|
12
20
|
include Container
|
21
|
+
extend Container
|
13
22
|
|
14
23
|
# dir_for helpers
|
15
24
|
# -------------------
|
@@ -32,6 +32,14 @@ module Rails3::Assist::File
|
|
32
32
|
def append_to_#{name}_file content=nil, &block
|
33
33
|
File.append(#{name}_file, content, &block)
|
34
34
|
end
|
35
|
+
|
36
|
+
def replace_in_#{name}_file options = {}, &block
|
37
|
+
File.replace_content_from(#{name}_file, options, &block)
|
38
|
+
end
|
39
|
+
|
40
|
+
def remove_from_#{name}_file content=nil, &block
|
41
|
+
File.remove_from(#{name}_file, content, &block)
|
42
|
+
end
|
35
43
|
}
|
36
44
|
end
|
37
45
|
end
|
data/lib/rails3_assist/files.rb
CHANGED
@@ -11,7 +11,7 @@ module Rails3::Assist
|
|
11
11
|
RYBY_FILES = '**/*.rb'
|
12
12
|
|
13
13
|
def rails_app_files type = :app, options = {}
|
14
|
-
dir = Rails3::Assist::
|
14
|
+
dir = Rails3::Assist::Directory.send "#{type.to_s.singularize}_dir"
|
15
15
|
expr = options[:expr]
|
16
16
|
file_pattern = options[:pattern] || RYBY_FILES
|
17
17
|
pattern = "#{dir}/#{file_pattern}"
|
data/lib/rails3_assist.rb
CHANGED
@@ -20,11 +20,11 @@ module Rails3::Assist
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
require 'rails3_assist/rspec/macro'
|
24
|
-
|
25
23
|
require 'rails3_assist/app'
|
26
24
|
require 'rails3_assist/directory'
|
27
25
|
require 'rails3_assist/file'
|
28
26
|
require 'rails3_assist/files'
|
29
27
|
require 'rails3_assist/artifact'
|
30
28
|
|
29
|
+
require 'rails3_assist/rspec/configure'
|
30
|
+
|
data/rails3_assist.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rails3_assist}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.7"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kristian Mandrup"]
|
@@ -41,8 +41,6 @@ Gem::Specification.new do |s|
|
|
41
41
|
"lib/rails3_assist/files.rb",
|
42
42
|
"lib/rails3_assist/namespaces.rb",
|
43
43
|
"lib/rails3_assist/rspec/configure.rb",
|
44
|
-
"lib/rails3_assist/rspec/matchers/have_app_config.rb",
|
45
|
-
"lib/rails3_assist/rspec/matchers/have_special_file.rb",
|
46
44
|
"rails3_assist.gemspec",
|
47
45
|
"rails_generator.log",
|
48
46
|
"spec/fixtures.rb",
|
@@ -3,11 +3,12 @@ require 'spec_helper'
|
|
3
3
|
CLASS = Rails3::Assist::Artifact::Files
|
4
4
|
|
5
5
|
class ArtDir
|
6
|
-
|
6
|
+
extend Rails3::Assist::UseMacro
|
7
|
+
use_helper :files
|
7
8
|
end
|
8
9
|
|
9
10
|
describe Rails3::Assist::Artifact::Files do
|
10
|
-
|
11
|
+
use_helper :directory
|
11
12
|
|
12
13
|
before do
|
13
14
|
Rails3::Assist::Directory.rails_root = fixtures_dir
|
@@ -16,7 +16,7 @@ describe Rails3::Assist::File do
|
|
16
16
|
|
17
17
|
describe '#initializer_file' do
|
18
18
|
it "should return the initializer file 'mime_type' " do
|
19
|
-
|
19
|
+
AppDir.new.initializer_file('mime_type').should match /mime_type/
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
@@ -3,7 +3,8 @@ require 'spec_helper'
|
|
3
3
|
CLASS = Rails3::Assist::Files
|
4
4
|
|
5
5
|
class AppDir
|
6
|
-
|
6
|
+
extend Rails3::Assist::UseMacro
|
7
|
+
use_helper :files
|
7
8
|
end
|
8
9
|
|
9
10
|
describe Rails3::Assist::Files do
|
@@ -15,7 +16,7 @@ describe Rails3::Assist::Files do
|
|
15
16
|
|
16
17
|
describe '#rails_app_files' do
|
17
18
|
it "should return all :app files using default pattern" do
|
18
|
-
|
19
|
+
AppDir.new.rails_app_files(:model)
|
19
20
|
end
|
20
21
|
end
|
21
22
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 7
|
9
|
+
version: 0.2.7
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Kristian Mandrup
|
@@ -113,8 +113,6 @@ files:
|
|
113
113
|
- lib/rails3_assist/files.rb
|
114
114
|
- lib/rails3_assist/namespaces.rb
|
115
115
|
- lib/rails3_assist/rspec/configure.rb
|
116
|
-
- lib/rails3_assist/rspec/matchers/have_app_config.rb
|
117
|
-
- lib/rails3_assist/rspec/matchers/have_special_file.rb
|
118
116
|
- rails3_assist.gemspec
|
119
117
|
- rails_generator.log
|
120
118
|
- spec/fixtures.rb
|
@@ -1,49 +0,0 @@
|
|
1
|
-
# open application_file
|
2
|
-
# see if there is the config.[statement] = [expr]
|
3
|
-
|
4
|
-
module RSpec::Rails::ContentMatchers
|
5
|
-
class HaveAppConfig
|
6
|
-
|
7
|
-
use_rails_file_helpers :special # TODO !!!
|
8
|
-
|
9
|
-
attr_reader :left_side, :right_side, :operator
|
10
|
-
|
11
|
-
def initialize statement_hash
|
12
|
-
@left_side, @right_side = *statement.first
|
13
|
-
@operator = statement.last[:op] || '='
|
14
|
-
end
|
15
|
-
|
16
|
-
# TODO: relative to root_path ?
|
17
|
-
def matches?(root_path=nil)
|
18
|
-
content = read_application_file
|
19
|
-
return nil if content.empty?
|
20
|
-
|
21
|
-
ls, rs, op = escape_all(left_side, right_side, operator)
|
22
|
-
(content =~ /config.#{ls}\s*#{op}\s*#{rs}/)
|
23
|
-
end
|
24
|
-
|
25
|
-
def escape_all *texts
|
26
|
-
texts.map{|t| Regexp.escape(t) }
|
27
|
-
end
|
28
|
-
|
29
|
-
def msg
|
30
|
-
"there to be the Application config statement '#{left_side} #{operator} #{right_side}' in config/application.rb"
|
31
|
-
end
|
32
|
-
|
33
|
-
def failure_message
|
34
|
-
"Expected #{msg}"
|
35
|
-
end
|
36
|
-
|
37
|
-
def negative_failure_message
|
38
|
-
super
|
39
|
-
"Did not expect #{msg}"
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
# config.autoload_paths += %W(#{Rails.root}/lib)
|
44
|
-
# have_app_config :autoload_paths => '%W(#{Rails.root}/lib)', :op => '+='
|
45
|
-
def have_app_config statement_hash
|
46
|
-
HaveAppConfig.new statement_hash
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
File without changes
|