themes_for_rails 0.4.3 → 0.5.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. data/.gitignore +1 -0
  2. data/.travis.yml +2 -0
  3. data/Gemfile.lock +40 -35
  4. data/README.textile +11 -235
  5. data/Rakefile +1 -0
  6. data/doc/README.textile +363 -0
  7. data/{REVIEW_NOTES → doc/REVIEW_NOTES} +0 -0
  8. data/{RMU_REVIEW → doc/RMU_REVIEW} +0 -0
  9. data/{TODO.textile → doc/TODO.textile} +0 -0
  10. data/lib/themes_for_rails.rb +7 -6
  11. data/lib/themes_for_rails/{controller_methods.rb → action_controller.rb} +15 -9
  12. data/lib/themes_for_rails/action_mailer.rb +22 -0
  13. data/lib/themes_for_rails/action_view.rb +59 -0
  14. data/lib/themes_for_rails/assets_controller.rb +12 -13
  15. data/lib/themes_for_rails/common_methods.rb +28 -10
  16. data/lib/themes_for_rails/config.rb +44 -7
  17. data/lib/themes_for_rails/interpolation.rb +11 -0
  18. data/lib/themes_for_rails/railtie.rb +13 -2
  19. data/lib/themes_for_rails/routes.rb +15 -4
  20. data/lib/themes_for_rails/url_helpers.rb +16 -12
  21. data/lib/themes_for_rails/version.rb +2 -1
  22. data/test/lib/{controller_methods_test.rb → action_controller_test.rb} +59 -9
  23. data/test/lib/{mailer_methods_test.rb → action_mailer_test.rb} +2 -1
  24. data/test/lib/action_view_test.rb +54 -0
  25. data/test/lib/assets_controller_test.rb +11 -2
  26. data/test/lib/common_methods_test.rb +12 -6
  27. data/test/lib/config_test.rb +3 -2
  28. data/test/lib/integration_test.rb +12 -0
  29. data/test/lib/routes_test.rb +3 -2
  30. data/test/lib/themes_for_rails_test.rb +3 -2
  31. data/test/support/extensions.rb +1 -0
  32. data/test/test_helper.rb +1 -0
  33. data/themes_for_rails.gemspec +1 -0
  34. metadata +44 -28
  35. data/lib/themes_for_rails/mailer_methods.rb +0 -21
  36. data/lib/themes_for_rails/view_helpers.rb +0 -51
  37. data/test/lib/view_helpers_test.rb +0 -38
data/.gitignore CHANGED
@@ -4,3 +4,4 @@ tmp
4
4
  .DS_Store
5
5
  spec/dummy/db/*.sqlite3
6
6
  spec/dummy/log/test.log
7
+ .svn
@@ -0,0 +1,2 @@
1
+ rvm:
2
+ - 1.9.3
@@ -1,45 +1,46 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- themes_for_rails (0.4.3)
4
+ themes_for_rails (0.5.0.pre)
5
5
  rails (>= 3.0.0)
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
10
  abstract (1.0.0)
11
- actionmailer (3.0.5)
12
- actionpack (= 3.0.5)
13
- mail (~> 2.2.15)
14
- actionpack (3.0.5)
15
- activemodel (= 3.0.5)
16
- activesupport (= 3.0.5)
11
+ actionmailer (3.0.11)
12
+ actionpack (= 3.0.11)
13
+ mail (~> 2.2.19)
14
+ actionpack (3.0.11)
15
+ activemodel (= 3.0.11)
16
+ activesupport (= 3.0.11)
17
17
  builder (~> 2.1.2)
18
18
  erubis (~> 2.6.6)
19
- i18n (~> 0.4)
19
+ i18n (~> 0.5.0)
20
20
  rack (~> 1.2.1)
21
- rack-mount (~> 0.6.13)
21
+ rack-mount (~> 0.6.14)
22
22
  rack-test (~> 0.5.7)
23
23
  tzinfo (~> 0.3.23)
24
- activemodel (3.0.5)
25
- activesupport (= 3.0.5)
24
+ activemodel (3.0.11)
25
+ activesupport (= 3.0.11)
26
26
  builder (~> 2.1.2)
27
- i18n (~> 0.4)
28
- activerecord (3.0.5)
29
- activemodel (= 3.0.5)
30
- activesupport (= 3.0.5)
31
- arel (~> 2.0.2)
27
+ i18n (~> 0.5.0)
28
+ activerecord (3.0.11)
29
+ activemodel (= 3.0.11)
30
+ activesupport (= 3.0.11)
31
+ arel (~> 2.0.10)
32
32
  tzinfo (~> 0.3.23)
33
- activeresource (3.0.5)
34
- activemodel (= 3.0.5)
35
- activesupport (= 3.0.5)
36
- activesupport (3.0.5)
33
+ activeresource (3.0.11)
34
+ activemodel (= 3.0.11)
35
+ activesupport (= 3.0.11)
36
+ activesupport (3.0.11)
37
37
  arel (2.0.10)
38
38
  builder (2.1.2)
39
39
  contest (0.1.2)
40
40
  erubis (2.6.6)
41
41
  abstract (>= 1.0.0)
42
42
  i18n (0.5.0)
43
+ json (1.6.5)
43
44
  mail (2.2.19)
44
45
  activesupport (>= 2.3.6)
45
46
  i18n (>= 0.4.0)
@@ -48,32 +49,35 @@ GEM
48
49
  mime-types (1.17.2)
49
50
  mocha (0.9.12)
50
51
  polyglot (0.3.3)
51
- rack (1.2.1)
52
- rack-mount (0.6.13)
52
+ rack (1.2.5)
53
+ rack-mount (0.6.14)
53
54
  rack (>= 1.0.0)
54
55
  rack-test (0.5.7)
55
56
  rack (>= 1.0)
56
- rails (3.0.5)
57
- actionmailer (= 3.0.5)
58
- actionpack (= 3.0.5)
59
- activerecord (= 3.0.5)
60
- activeresource (= 3.0.5)
61
- activesupport (= 3.0.5)
57
+ rails (3.0.11)
58
+ actionmailer (= 3.0.11)
59
+ actionpack (= 3.0.11)
60
+ activerecord (= 3.0.11)
61
+ activeresource (= 3.0.11)
62
+ activesupport (= 3.0.11)
62
63
  bundler (~> 1.0)
63
- railties (= 3.0.5)
64
- railties (3.0.5)
65
- actionpack (= 3.0.5)
66
- activesupport (= 3.0.5)
64
+ railties (= 3.0.11)
65
+ railties (3.0.11)
66
+ actionpack (= 3.0.11)
67
+ activesupport (= 3.0.11)
67
68
  rake (>= 0.8.7)
69
+ rdoc (~> 3.4)
68
70
  thor (~> 0.14.4)
69
- rake (0.8.7)
70
- sqlite3 (1.3.3)
71
+ rake (0.9.2.2)
72
+ rdoc (3.12)
73
+ json (~> 1.4)
74
+ sqlite3 (1.3.5)
71
75
  test-unit (2.2.0)
72
76
  thor (0.14.6)
73
77
  treetop (1.4.10)
74
78
  polyglot
75
79
  polyglot (>= 0.3.1)
76
- tzinfo (0.3.24)
80
+ tzinfo (0.3.31)
77
81
 
78
82
  PLATFORMS
79
83
  ruby
@@ -81,6 +85,7 @@ PLATFORMS
81
85
  DEPENDENCIES
82
86
  contest
83
87
  mocha
88
+ rails (= 3.0.11)
84
89
  sqlite3
85
90
  test-unit
86
91
  themes_for_rails!
@@ -1,258 +1,33 @@
1
1
  h1. Theme For Rails (3 and hopefully later)
2
2
 
3
- h2. Features list / Wish list
3
+ h2. Features list
4
4
 
5
5
  * Support for adding themes which includes stylesheets, javascripts, views and layouts.
6
+ * add a theme-image-url sass helper method for asset pipeline based themes
7
+ * update the generators and rake tasks to support asset pipeline based themes
8
+ * (NEW) works with the Rails Assets Pipeline without interfering, and leveraging it.
6
9
 
7
- <pre>
8
- $app_root
9
- themes/
10
- [theme_name]
11
- images/
12
- stylesheets/
13
- javascripts/
14
- views/ <- you can override application views
15
- layouts/ <- layout .rhtml or .liquid templates
16
- </pre>
17
-
18
- h2. Instructions
19
-
20
- Add themes_for_rails to your Gemfile.
21
-
22
- <pre>
23
- gem 'themes_for_rails'
24
- </pre>
25
-
26
- Add themes_for_rails to your config/routes.rb
27
-
28
- <pre>
29
- MySuperDuperApp::Application.routes.draw do
30
- # ...
31
- themes_for_rails
32
- # ...
33
- end
34
- </pre>
35
-
36
- h3. And then?
37
-
38
- Now you'll be able to use themes like this:
39
-
40
- Inside method, for some explicit action:
41
-
42
- <pre>
43
- class MyController < ApplicationController
44
- def show
45
- theme "purple"
46
- end
47
- end
48
- </pre>
49
-
50
- Or at class level definition, in order to set a theme for more than one action. I think this is is prettier, and less invasive.
51
-
52
- <pre>
53
- class MyController < ApplicationController
54
- theme "purple" # all actions will use this theme
55
- def show
56
- ...
57
- end
58
- end
59
- </pre>
60
-
61
- You could also enable a theme for some actions only
62
-
63
- <pre>
64
- class MyController < ApplicationController
65
- theme "purple", :only => :show
66
- def show
67
- # with theme
68
- end
69
- def edit
70
- # no theme
71
- end
72
- end
73
- </pre>
74
-
75
- As a plus, you could do this to defer theme name resolution to a method:
76
-
77
- <pre>
78
- class MyController < ApplicationController
79
- theme :theme_resolver
80
- # ...
81
- private
82
- def theme_resolver
83
- current_user.theme # or anything else that return a string.
84
- end
85
- end
86
- </pre>
87
-
88
- As a general rule, when passing a String, that becomes the theme name, but when a Symbol is sent, it gets treated as method message.
89
-
90
-
91
- h3. Action Mailer integration:
92
-
93
- As a plus, you can use it from Action Mailer too (thanks to rafaelss) like this:
94
-
95
- <pre>
96
- class MyMailer < ActionMailer::Base
97
-
98
- def notify_someone
99
- mail :theme => "blue" , :to => "some@one.com"
100
- end
101
-
102
- end
103
- </pre>
104
-
105
- Or set the theme by default like this (thanks to maxjgon):
106
-
107
- <pre>
108
- class MyMailer < ActionMailer::Base
109
-
110
- default :theme => "blue"
111
-
112
- def notify_someone
113
- mail :to => "some@one.com"
114
- end
115
-
116
- end
117
- </pre>
118
-
119
- h3. Url Helpers
120
-
121
- In your views you should be able to access your assets like this (given the theme 'default' is set):
122
-
123
- <pre>
124
- current_theme_image_path('logo.png') # => /themes/default/images/logo.png
125
- current_theme_stylesheet_path('style') # => /themes/default/stylesheets/logo.css
126
- current_theme_javascript_path('app') # => /themes/default/stylesheets/app.js
127
- </pre>
128
-
129
- Or a given theme:
130
-
131
- <pre>
132
- current_theme_image_path('logo.png', 'purple') # => /themes/purple/images/logo.png
133
- </pre>
134
-
135
- In your application views, there are theme specific helper tags
136
- available to you. For ERb templates they are:
137
-
138
- <pre>
139
- theme_image_tag
140
- theme_image_path
141
- theme_javascript_include_tag
142
- theme_javascript_path
143
- theme_stylesheet_link_tag
144
- theme_stylesheet_path
145
- </pre>
146
-
147
- h2. Generators
148
-
149
- For now, it only creates the theme folder and add the "themes_for_rails" route in the routes.rb.
150
-
151
- <pre>
152
- rails generate themes_for_rails:install
153
- </pre>
154
-
155
- Inside the themes folder, it create a structure for my_theme.
156
-
157
- <pre>
158
- rails generate themes_for_rails:theme my_theme
159
- </pre>
160
-
161
- h2. Changing things
162
-
163
- At least for now, you can change the ThemesForRails base dir in your app, in the corresponding environment file, or in your application.rb file. Do it like this:
164
-
165
- <pre>
166
- KillerApp::Application.configure do
167
- #
168
-
169
- config.themes_for_rails.base_dir = File.join(Rails.root, "tmp")
170
-
171
- #...
172
- end
173
- </pre>
174
-
175
- Thanks to matheusca, now you can change the name of the theme's dir.
176
-
177
- <pre>
178
- KillerApp::Application.configure do
179
- #
180
-
181
- config.themes_for_rails.themes_dir = "another_themes"
182
-
183
- #...
184
- end
185
- </pre>
186
-
187
- h2. Sass support
188
-
189
- ThemesForRails will automatically add the themes paths to Sass, if sass is available.
190
-
191
- For instance, everything you put inside themes/my_theme/stylesheets/sass will get compiled into themes/my_theme/stylesheets (duh, right?)
192
-
193
- To bypass sass configuration, do this:
194
- <pre>
195
- KillerApp::Application.configure do
196
- #
197
-
198
- config.themes_for_rails.use_sass = false
199
-
200
- #...
201
- end
202
- </pre>
203
-
204
- h2. Another way to change things
205
-
206
- If you don't like this approach and prefer something more like an initializer file, you could create one an put something like this.
207
-
208
- <pre>
209
- # Rails.root/config/initializers/themes_for_rails.rb (for instance)
210
- ThemesForRails.config do |config|
211
- #
212
- config.themes_dir = 'another_themes'
213
- # ...
214
- end
215
- </pre>
216
-
217
-
218
-
219
- h2. Notes and Warnings.
220
-
221
- If you are running an app in production mode, and you get the static files with no content, is because you don't have X-senfile enabled at your web server.
222
-
223
- You can do two things:
224
-
225
- comment out this line in your production.rb file:
226
-
227
- config.action_dispatch.x_sendfile_header = "X-Sendfile"
228
-
229
- or
230
-
231
- configure your web server to use it. :)
10
+ h2. Compatibility
232
11
 
12
+ This gem works with Rails from version 3.0 to at least 3.2.1 (current at the moment of writing this readme file).
233
13
 
234
14
  h2. Documentation
235
15
 
236
- "Read it here":http://rubydoc.info/github/lucasefe/themes_for_rails/master/frames
16
+ * "Rdoc":http://rubydoc.info/github/lucasefe/themes_for_rails/master/frames
17
+ * "Wiki":https://github.com/lucasefe/themes_for_rails/wiki
18
+ * "Old Readme File":https://github.com/lucasefe/themes_for_rails/blob/master/doc/README.textile
237
19
 
238
- h2. Ideas
20
+ h2. Ideas / Inspiration
239
21
 
240
22
  * Add ThemesForRails::Railtie for configuration, so we selectively set the plugin on or off. Also to be able to change several settings.
241
23
  * -Add routes to allow access to the theme's static resources (js and cs), unless cached on public folder by capistrano / rake.-
242
24
  * -Extend Action View path in order to make the views accessible. Same for the layouts.-
243
25
  * More tests ford edge cases. Now I am only testing the happy paths.
244
26
 
245
- h2. Things to remember.
246
-
247
- * -Final version should be a gem. Initialization hooks doesn't work when using this as a plugin (vendor/plugins).-
248
- * -Research about testing this kind of gem. I really don't have a clue.- Testing in place!
249
- * I should probably load the theme list at start time, to be able to consult it as needed. I am gonna need that when dealing with runtime theme selection. Many themes are going to be used simultaneously, so I have to be able to switch view paths as fast as I can.
250
-
251
27
  h2. Rails 2 Support
252
28
 
253
29
  This gem only works with Rails 3 (duh). If you want the same exactly behavior, but for Rails 2.x, go "here":http://github.com/jystewart/theme_support .
254
30
 
255
-
256
31
  h2. Running tests
257
32
 
258
33
  <pre>
@@ -264,6 +39,7 @@ rake
264
39
  h2. Authors and contributors
265
40
 
266
41
  * lucasefe
42
+ * jedifreeman
267
43
  * jbarreneche
268
44
  * kule
269
45
  * matheusmoreira
data/Rakefile CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env rake
2
+ # encoding: utf-8
2
3
  require "bundler/gem_tasks"
3
4
  task :default => :test
4
5
 
@@ -0,0 +1,363 @@
1
+ h1. Theme For Rails (3 and hopefully later)
2
+
3
+ h2. Features list / Wish list
4
+
5
+ * Support for adding themes which includes stylesheets, javascripts, views and layouts.
6
+ * add a theme-image-url sass helper method for asset pipeline based themes
7
+ * update the generators and rake tasks to support asset pipeline based themes
8
+
9
+ <pre>
10
+ $app_root
11
+ themes/
12
+ [theme_name]
13
+ images/
14
+ stylesheets/
15
+ javascripts/
16
+ views/ <- you can override application views
17
+ layouts/ <- layout .rhtml or .liquid templates
18
+ </pre>
19
+
20
+ h2. Instructions
21
+
22
+ Add themes_for_rails to your Gemfile.
23
+
24
+ <pre>
25
+ gem 'themes_for_rails'
26
+ </pre>
27
+
28
+ Add themes_for_rails to your config/routes.rb
29
+
30
+ <pre>
31
+ MySuperDuperApp::Application.routes.draw do
32
+ # ...
33
+ themes_for_rails
34
+ # ...
35
+ end
36
+ </pre>
37
+
38
+ h3. Additional Instructions for using the Rails Asset Pipeline
39
+
40
+ In order to use themes_for_rails with the asset pipeline, you will need to configure a few settings and place your themes in the asset pipeline directory.
41
+
42
+ First, move your assets into the asset pipeline. For example:
43
+
44
+ <pre>
45
+ $app_root
46
+ app/
47
+ assets/
48
+ images/ <-- default asset pipeline folder
49
+ javascripts/ <-- default asset pipeline folder
50
+ stylesheets/ <-- default asset pipeline folder
51
+ themes/ <-- your themes root
52
+ [theme_name]
53
+ images/
54
+ stylesheets/
55
+ javascripts/
56
+ views/ <- you can override application views
57
+ layouts/ <- layout .rhtml or .liquid templates
58
+ </pre>
59
+
60
+ Create an initializer for themes in your {Rails.root}/config/initializers directory and set the themes_dir and assets_dir settings appropriately.
61
+
62
+ <pre>
63
+ # Rails.root/config/initializers/themes_for_rails.rb (for instance)
64
+ ThemesForRails.config do |config|
65
+ #
66
+ # If you have placed your themes like the example path above within the asset pipeline:
67
+ config.themes_dir = 'assets'
68
+ config.assets_dir = 'app/assets/themes'
69
+ # ...
70
+ end
71
+ </pre>
72
+
73
+ In your theme stylesheets directory, you can create an application.css file using the Sprockets require methods:
74
+
75
+ <pre>
76
+ /*
77
+ *= require global_stylesheet_name
78
+ *= require theme_name/stylesheets/stylesheet_name
79
+ */
80
+ </pre>
81
+
82
+ As you can see, if you do not preface with the theme_name/stylesheets it will reference the root /app/assets/stylesheets path for global stylesheets (great for mixins and reset styles)
83
+
84
+ Currently, one unresolved issue with this setup is that you must pass the theme_name/images path into your sass image-url helper methods. For example, if you are including an image in the 'default' theme: <pre>image-url('default/images/background.png')</pre>
85
+
86
+ If you do not want to have your views inside the asset pipeline dir, you can alternatively configure your application like this:
87
+
88
+ <pre>
89
+ $app_root
90
+ app/
91
+ assets/
92
+ images/ <-- default asset pipeline folder
93
+ javascripts/ <-- default asset pipeline folder
94
+ stylesheets/ <-- default asset pipeline folder
95
+ themes/ <-- your themes root
96
+ [theme_name]
97
+ images/
98
+ stylesheets/
99
+ javascripts/
100
+ views/
101
+ themes/ <-- note themes folder lives under views in this scenario
102
+ [theme_name]
103
+ layouts/ <- layout .rhtml or .liquid templates
104
+ </pre>
105
+
106
+ and in your initializer, you will need to set the views_dir config setting like so:
107
+
108
+ <pre>
109
+ # Rails.root/config/initializers/themes_for_rails.rb (for instance)
110
+ ThemesForRails.config do |config|
111
+ #
112
+ # If you have placed your themes like the example path above within the asset pipeline:
113
+ config.themes_dir = 'assets'
114
+ config.assets_dir = 'app/assets/themes'
115
+ config.views_dir = 'app/views/themes'
116
+ # ...
117
+ end
118
+ </pre>
119
+
120
+ After that, the rest of the config for asset pipeline styles and whatnot mentioned above will work.
121
+
122
+ h3. And then?
123
+
124
+ Now you'll be able to use themes like this:
125
+
126
+ Inside method, for some explicit action:
127
+
128
+ <pre>
129
+ class MyController < ApplicationController
130
+ def show
131
+ theme "purple"
132
+ end
133
+ end
134
+ </pre>
135
+
136
+ Or at class level definition, in order to set a theme for more than one action. I think this is is prettier, and less invasive.
137
+
138
+ <pre>
139
+ class MyController < ApplicationController
140
+ theme "purple" # all actions will use this theme
141
+ def show
142
+ ...
143
+ end
144
+ end
145
+ </pre>
146
+
147
+ You could also enable a theme for some actions only
148
+
149
+ <pre>
150
+ class MyController < ApplicationController
151
+ theme "purple", :only => :show
152
+ def show
153
+ # with theme
154
+ end
155
+ def edit
156
+ # no theme
157
+ end
158
+ end
159
+ </pre>
160
+
161
+ As a plus, you could do this to defer theme name resolution to a method:
162
+
163
+ <pre>
164
+ class MyController < ApplicationController
165
+ theme :theme_resolver
166
+ # ...
167
+ private
168
+ def theme_resolver
169
+ current_user.theme # or anything else that return a string.
170
+ end
171
+ end
172
+ </pre>
173
+
174
+ As a general rule, when passing a String, that becomes the theme name, but when a Symbol is sent, it gets treated as method message.
175
+
176
+
177
+ h3. Action Mailer integration:
178
+
179
+ As a plus, you can use it from Action Mailer too (thanks to rafaelss) like this:
180
+
181
+ <pre>
182
+ class MyMailer < ActionMailer::Base
183
+
184
+ def notify_someone
185
+ mail :theme => "blue" , :to => "some@one.com"
186
+ end
187
+
188
+ end
189
+ </pre>
190
+
191
+ Or set the theme by default like this (thanks to maxjgon):
192
+
193
+ <pre>
194
+ class MyMailer < ActionMailer::Base
195
+
196
+ default :theme => "blue"
197
+
198
+ def notify_someone
199
+ mail :to => "some@one.com"
200
+ end
201
+
202
+ end
203
+ </pre>
204
+
205
+ h3. Url Helpers
206
+
207
+ In your views you should be able to access your assets like this (given the theme 'default' is set):
208
+
209
+ <pre>
210
+ current_theme_image_path('logo.png') # => /themes/default/images/logo.png
211
+ current_theme_stylesheet_path('style') # => /themes/default/stylesheets/logo.css
212
+ current_theme_javascript_path('app') # => /themes/default/stylesheets/app.js
213
+ </pre>
214
+
215
+ Or a given theme:
216
+
217
+ <pre>
218
+ current_theme_image_path('logo.png', 'purple') # => /themes/purple/images/logo.png
219
+ </pre>
220
+
221
+ In your application views, there are theme specific helper tags
222
+ available to you. For ERb templates they are:
223
+
224
+ <pre>
225
+ theme_image_tag
226
+ theme_image_path
227
+ theme_javascript_include_tag
228
+ theme_javascript_path
229
+ theme_stylesheet_link_tag
230
+ theme_stylesheet_path
231
+ </pre>
232
+
233
+ h2. Generators
234
+
235
+ For now, it only creates the theme folder and add the "themes_for_rails" route in the routes.rb.
236
+
237
+ <pre>
238
+ rails generate themes_for_rails:install
239
+ </pre>
240
+
241
+ Inside the themes folder, it create a structure for my_theme.
242
+
243
+ <pre>
244
+ rails generate themes_for_rails:theme my_theme
245
+ </pre>
246
+
247
+ h2. Changing things
248
+
249
+ At least for now, you can change the ThemesForRails base dir in your app, in the corresponding environment file, or in your application.rb file. Do it like this:
250
+
251
+ <pre>
252
+ KillerApp::Application.configure do
253
+ #
254
+
255
+ config.themes_for_rails.base_dir = File.join(Rails.root, "tmp")
256
+
257
+ #...
258
+ end
259
+ </pre>
260
+
261
+ Thanks to matheusca, now you can change the name of the theme's dir.
262
+
263
+ <pre>
264
+ KillerApp::Application.configure do
265
+ #
266
+
267
+ config.themes_for_rails.themes_dir = "another_themes"
268
+
269
+ #...
270
+ end
271
+ </pre>
272
+
273
+ h2. Sass support
274
+
275
+ ThemesForRails will automatically add the themes paths to Sass, if sass is available.
276
+
277
+ For instance, everything you put inside themes/my_theme/stylesheets/sass will get compiled into themes/my_theme/stylesheets (duh, right?)
278
+
279
+ To bypass sass configuration, do this:
280
+ <pre>
281
+ KillerApp::Application.configure do
282
+ #
283
+
284
+ config.themes_for_rails.use_sass = false
285
+
286
+ #...
287
+ end
288
+ </pre>
289
+
290
+ h2. Another way to change things
291
+
292
+ If you don't like this approach and prefer something more like an initializer file, you could create one an put something like this.
293
+
294
+ <pre>
295
+ # Rails.root/config/initializers/themes_for_rails.rb (for instance)
296
+ ThemesForRails.config do |config|
297
+ #
298
+ config.themes_dir = 'another_themes'
299
+ # ...
300
+ end
301
+ </pre>
302
+
303
+
304
+
305
+ h2. Notes and Warnings.
306
+
307
+ If you are running an app in production mode, and you get the static files with no content, is because you don't have X-senfile enabled at your web server.
308
+
309
+ You can do two things:
310
+
311
+ comment out this line in your production.rb file:
312
+
313
+ config.action_dispatch.x_sendfile_header = "X-Sendfile"
314
+
315
+ or
316
+
317
+ configure your web server to use it. :)
318
+
319
+
320
+ h2. Documentation
321
+
322
+ "Read it here":http://rubydoc.info/github/lucasefe/themes_for_rails/master/frames
323
+
324
+ h2. Ideas
325
+
326
+ * Add ThemesForRails::Railtie for configuration, so we selectively set the plugin on or off. Also to be able to change several settings.
327
+ * -Add routes to allow access to the theme's static resources (js and cs), unless cached on public folder by capistrano / rake.-
328
+ * -Extend Action View path in order to make the views accessible. Same for the layouts.-
329
+ * More tests ford edge cases. Now I am only testing the happy paths.
330
+
331
+ h2. Things to remember.
332
+
333
+ * -Final version should be a gem. Initialization hooks doesn't work when using this as a plugin (vendor/plugins).-
334
+ * -Research about testing this kind of gem. I really don't have a clue.- Testing in place!
335
+ * I should probably load the theme list at start time, to be able to consult it as needed. I am gonna need that when dealing with runtime theme selection. Many themes are going to be used simultaneously, so I have to be able to switch view paths as fast as I can.
336
+
337
+ h2. Rails 2 Support
338
+
339
+ This gem only works with Rails 3 (duh). If you want the same exactly behavior, but for Rails 2.x, go "here":http://github.com/jystewart/theme_support .
340
+
341
+
342
+ h2. Running tests
343
+
344
+ <pre>
345
+ gem install bundler
346
+ bundle install
347
+ rake
348
+ </pre>
349
+
350
+ h2. Authors and contributors
351
+
352
+ * lucasefe
353
+ * jbarreneche
354
+ * kule
355
+ * matheusmoreira
356
+ * rafaelss
357
+ * maxjgon
358
+
359
+ h2. Last but not least
360
+
361
+ If you are using this gem, please, take a minute to recommend me at Working With Rails.
362
+
363
+ <a href="http://www.workingwithrails.com/recommendation/new/person/7277-lucas-florio"><img alt="Recommend Me" src="http://workingwithrails.com/images/tools/compact-small.jpg" /></a>