lotus-assets 0.0.0 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +19 -0
- data/{LICENSE.txt → LICENSE.md} +1 -1
- data/README.md +429 -7
- data/bin/lotus-assets +22 -0
- data/lib/lotus/assets.rb +153 -2
- data/lib/lotus/assets/bundler.rb +173 -0
- data/lib/lotus/assets/cache.rb +58 -0
- data/lib/lotus/assets/compiler.rb +212 -0
- data/lib/lotus/assets/compressors/abstract.rb +119 -0
- data/lib/lotus/assets/compressors/builtin_javascript.rb +36 -0
- data/lib/lotus/assets/compressors/builtin_stylesheet.rb +57 -0
- data/lib/lotus/assets/compressors/closure_javascript.rb +25 -0
- data/lib/lotus/assets/compressors/javascript.rb +77 -0
- data/lib/lotus/assets/compressors/jsmin.rb +283 -0
- data/lib/lotus/assets/compressors/null_compressor.rb +19 -0
- data/lib/lotus/assets/compressors/sass_stylesheet.rb +38 -0
- data/lib/lotus/assets/compressors/stylesheet.rb +77 -0
- data/lib/lotus/assets/compressors/uglifier_javascript.rb +25 -0
- data/lib/lotus/assets/compressors/yui_javascript.rb +25 -0
- data/lib/lotus/assets/compressors/yui_stylesheet.rb +25 -0
- data/lib/lotus/assets/config/global_sources.rb +50 -0
- data/lib/lotus/assets/config/manifest.rb +112 -0
- data/lib/lotus/assets/config/sources.rb +77 -0
- data/lib/lotus/assets/configuration.rb +539 -0
- data/lib/lotus/assets/helpers.rb +733 -0
- data/lib/lotus/assets/precompiler.rb +67 -0
- data/lib/lotus/assets/version.rb +4 -1
- data/lotus-assets.gemspec +25 -11
- metadata +192 -15
- data/.gitignore +0 -22
- data/Gemfile +0 -4
- data/Rakefile +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a53af544bb09106a98a6312c6cb3e3be1efd9882
|
4
|
+
data.tar.gz: 3229cdb6681442576d81f5eeebe77f3aa642aae7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 77811692964b34196c8ce9f510db15c32885f02103563dea34a37ac71478cc86a06577ff66c42fb54a25eb34bc3beeb6a3e37bf7f6d221cc0e72b120bdc65eb0
|
7
|
+
data.tar.gz: a371359ce3d45cfcec912a5159b65abb532db329e3b52c320192e4b9e031007b33a213ebcee0bef20aa5d76ffc1e69a250e44bd0faccc78610f51486a45087fe
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# Lotus::Assets
|
2
|
+
Assets management for Ruby web applications
|
3
|
+
|
4
|
+
## v0.1.0 - 2016-01-12
|
5
|
+
### Added
|
6
|
+
- [Luca Guidi] Configurable assets compressors
|
7
|
+
- [Luca Guidi] Builtin JavaScript and stylesheet compressors
|
8
|
+
- [deepj & Michael Deol] Added `Lotus::Assets::Helpers#favicon`
|
9
|
+
- [Leigh Halliday] Added `Lotus::Assets::Helpers#video`
|
10
|
+
- [Kleber Correia] Added `Lotus::Assets::Helpers#audio`
|
11
|
+
- [Gonzalo Rodríguez-Baltanás Díaz] Added `Lotus::Assets::Helpers#image`
|
12
|
+
- [Luca Guidi] Added `Lotus::Assets::Helpers#javascript` and `#stylesheet`
|
13
|
+
- [Luca Guidi] Added `Lotus::Assets::Helpers#asset_path` and `#asset_url`
|
14
|
+
- [Luca Guidi] "CDN Mode" let helpers to generate CDN URLs (eg. `https://123.cloudfront.net/assets/application-d1829dc353b734e3adc24855693b70f9.js`)
|
15
|
+
- [Luca Guidi] "Digest Mode" let helpers to generate digest URLs (eg. `/assets/application-d1829dc353b734e3adc24855693b70f9.js`)
|
16
|
+
- [Luca Guidi] Added `lotus-assets` command to precompile assets at the deploy time
|
17
|
+
- [Luca Guidi] Added support for third party gems that want to ship gemified assets for Lotus
|
18
|
+
- [Luca Guidi] Assets preprocessors (eg. Sass, ES6, CoffeeScript, Opal, JSX)
|
19
|
+
- [Luca Guidi] Official support for Ruby 2.0+
|
data/{LICENSE.txt → LICENSE.md}
RENAMED
data/README.md
CHANGED
@@ -1,29 +1,451 @@
|
|
1
1
|
# Lotus::Assets
|
2
2
|
|
3
|
-
|
3
|
+
Assets management for Ruby web projects
|
4
|
+
|
5
|
+
## Status
|
6
|
+
|
7
|
+
[![Gem Version](http://img.shields.io/gem/v/lotus-assets.svg)](https://badge.fury.io/rb/lotus-assets)
|
8
|
+
[![Build Status](http://img.shields.io/travis/lotus/assets/master.svg)](https://travis-ci.org/lotus/assets?branch=master)
|
9
|
+
[![Coverage](http://img.shields.io/coveralls/lotus/assets/master.svg)](https://coveralls.io/r/lotus/assets)
|
10
|
+
[![Code Climate](http://img.shields.io/codeclimate/github/lotus/assets.svg)](https://codeclimate.com/github/lotus/assets)
|
11
|
+
[![Dependencies](http://img.shields.io/gemnasium/lotus/assets.svg)](https://gemnasium.com/lotus/assets)
|
12
|
+
[![Inline Docs](http://inch-ci.org/github/lotus/assets.svg)](http://inch-ci.org/github/lotus/assets)
|
13
|
+
|
14
|
+
## Contact
|
15
|
+
|
16
|
+
* Home page: http://lotusrb.org
|
17
|
+
* Community: http://lotusrb.org/community
|
18
|
+
* Guides: http://lotusrb.org/guides
|
19
|
+
* Mailing List: http://lotusrb.org/mailing-list
|
20
|
+
* API Doc: http://rdoc.info/gems/lotus-assets
|
21
|
+
* Bugs/Issues: https://github.com/lotus/assets/issues
|
22
|
+
* Support: http://stackoverflow.com/questions/tagged/lotus-ruby
|
23
|
+
* Forum: https://discuss.lotusrb.org
|
24
|
+
* Chat: http://chat.lotusrb.org
|
25
|
+
|
26
|
+
## Rubies
|
27
|
+
|
28
|
+
__Lotus::Assets__ supports Ruby (MRI) 2+
|
4
29
|
|
5
30
|
## Installation
|
6
31
|
|
7
32
|
Add this line to your application's Gemfile:
|
8
33
|
|
9
|
-
|
34
|
+
```ruby
|
35
|
+
gem 'lotus-assets'
|
36
|
+
```
|
10
37
|
|
11
38
|
And then execute:
|
12
39
|
|
13
|
-
|
40
|
+
```shell
|
41
|
+
$ bundle
|
42
|
+
```
|
14
43
|
|
15
44
|
Or install it yourself as:
|
16
45
|
|
17
|
-
|
46
|
+
```shell
|
47
|
+
$ gem install lotus-assets
|
48
|
+
```
|
18
49
|
|
19
50
|
## Usage
|
20
51
|
|
21
|
-
|
52
|
+
### Helpers
|
53
|
+
|
54
|
+
The framework offers assets specific helpers to be used in templates.
|
55
|
+
They resolve one or multiple sources into corresponding HTML tags.
|
56
|
+
Those sources can be the name of the local asset or an absolute URL.
|
57
|
+
|
58
|
+
Given the following template:
|
59
|
+
|
60
|
+
```erb
|
61
|
+
<!doctype HTML>
|
62
|
+
<html>
|
63
|
+
<head>
|
64
|
+
<title>Assets example</title>
|
65
|
+
<%= stylesheet 'reset', 'grid', 'main' %>
|
66
|
+
</head>
|
67
|
+
|
68
|
+
<body>
|
69
|
+
<!-- ... -->
|
70
|
+
<%= javascript 'https://code.jquery.com/jquery-2.1.1.min.js', 'application' %>
|
71
|
+
<%= javascript 'modals' %>
|
72
|
+
</body>
|
73
|
+
</html>
|
74
|
+
```
|
75
|
+
|
76
|
+
It will output this markup.
|
77
|
+
|
78
|
+
```html
|
79
|
+
<!doctype HTML>
|
80
|
+
<html>
|
81
|
+
<head>
|
82
|
+
<title>Assets example</title>
|
83
|
+
<link href="/assets/reset.css" type="text/css" rel="stylesheet">
|
84
|
+
<link href="/assets/grid.css" type="text/css" rel="stylesheet">
|
85
|
+
<link href="/assets/main.css" type="text/css" rel="stylesheet">
|
86
|
+
</head>
|
87
|
+
|
88
|
+
<body>
|
89
|
+
<!-- ... -->
|
90
|
+
<script src="https://code.jquery.com/jquery-2.1.1.min.js" type="text/javascript"></script>
|
91
|
+
<script src="/assets/application.js" type="text/javascript"></script>
|
92
|
+
<script src="/assets/modals.js" type="text/javascript"></script>
|
93
|
+
</body>
|
94
|
+
</html>
|
95
|
+
```
|
96
|
+
|
97
|
+
Let's have a look at the corresponding Ruby code.
|
98
|
+
In this example we use ERb, but remember that `Lotus::Assets` is compatible with
|
99
|
+
all the rendering engines such as HAML, Slim, Mustache, etc..
|
100
|
+
|
101
|
+
```ruby
|
102
|
+
require 'erb'
|
103
|
+
require 'lotus/assets'
|
104
|
+
require 'lotus/assets/helpers'
|
105
|
+
|
106
|
+
class View
|
107
|
+
include Lotus::Assets::Helpers
|
108
|
+
|
109
|
+
def initialize
|
110
|
+
@template = File.read('template.erb')
|
111
|
+
@engine = ERB.new(@template)
|
112
|
+
end
|
113
|
+
|
114
|
+
def render
|
115
|
+
@engine.result(binding)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
View.new.render # => HTML markup
|
120
|
+
```
|
121
|
+
|
122
|
+
For advanced configurations, please have a look at
|
123
|
+
[`Lotus::Assets::Configuration`](https://github.com/lotus/assets/blob/master/lib/lotus/assets/configuration.rb).
|
124
|
+
|
125
|
+
### Available Helpers
|
126
|
+
|
127
|
+
This gems ships with the following helpers:
|
128
|
+
|
129
|
+
* `javascript`
|
130
|
+
* `stylesheet`
|
131
|
+
* `favicon`
|
132
|
+
* `image`
|
133
|
+
* `video`
|
134
|
+
* `audio`
|
135
|
+
* `asset_path`
|
136
|
+
* `asset_url`
|
137
|
+
|
138
|
+
### Development mode
|
139
|
+
|
140
|
+
`Lotus::Assets` can help you during the development process of your application.
|
141
|
+
It can manage multiple source directories for each asset type or run a
|
142
|
+
preprocessor for you.
|
143
|
+
|
144
|
+
#### Sources
|
145
|
+
|
146
|
+
Imagine to have your application's javascripts under `app/assets/javascripts` and that
|
147
|
+
those assets depends on a vendored version of jQuery.
|
148
|
+
|
149
|
+
```ruby
|
150
|
+
require 'lotus/assets'
|
151
|
+
|
152
|
+
Lotus::Assets.configure do
|
153
|
+
compile true
|
154
|
+
|
155
|
+
sources << [
|
156
|
+
'app/assets',
|
157
|
+
'vendor/jquery'
|
158
|
+
]
|
159
|
+
end
|
160
|
+
```
|
161
|
+
|
162
|
+
When from a template you do:
|
163
|
+
|
164
|
+
```erb
|
165
|
+
<%= javascript 'jquery', 'jquery-ui', 'login' %>
|
166
|
+
```
|
167
|
+
|
168
|
+
`Lotus::Assets` looks at the defined sources and **lazily copies** those files
|
169
|
+
under `public/assets` (by default), before the markup is generated.
|
170
|
+
|
171
|
+
Your public directory will have the following structure.
|
172
|
+
|
173
|
+
```shell
|
174
|
+
% tree public
|
175
|
+
public/
|
176
|
+
└── assets
|
177
|
+
├── jquery.js
|
178
|
+
├── jquery-ui.js
|
179
|
+
└── login.js
|
180
|
+
|
181
|
+
```
|
182
|
+
|
183
|
+
**Please remember that sources are recursively looked up in order of declaration.**
|
184
|
+
|
185
|
+
If in the example above we had a `jquery.js` under `app/assets/javascripts/**/*.js`
|
186
|
+
that file would be copied into the public directory instead of the one under
|
187
|
+
`vendor/jquery`. The reason is because we declared `app/assets/javascripts` first.
|
188
|
+
|
189
|
+
#### Preprocessors
|
190
|
+
|
191
|
+
`Lotus::Assets` is able to run assets preprocessors and **lazily compile** them
|
192
|
+
under `public/assets` (by default), before the markup is generated.
|
193
|
+
|
194
|
+
Imagine to have `main.css.scss` under `app/assets/stylesheets` and `reset.css` under
|
195
|
+
`vendor/stylesheets`.
|
196
|
+
|
197
|
+
**The extensions structure is important.**
|
198
|
+
The first one is mandatory and it's used to understand which asset type we are
|
199
|
+
handling: `.css` for stylesheets.
|
200
|
+
The second one is optional and it's for a preprocessor: `.scss` for Sass.
|
201
|
+
|
202
|
+
```ruby
|
203
|
+
require 'sass'
|
204
|
+
require 'lotus/assets'
|
205
|
+
|
206
|
+
Lotus::Assets.configure do
|
207
|
+
compile true
|
208
|
+
|
209
|
+
sources << [
|
210
|
+
'assets',
|
211
|
+
'vendor/assets'
|
212
|
+
]
|
213
|
+
end
|
214
|
+
```
|
215
|
+
|
216
|
+
When from a template you do:
|
217
|
+
|
218
|
+
```erb
|
219
|
+
<%= stylesheet 'reset', 'main' %>
|
220
|
+
```
|
221
|
+
|
222
|
+
Your public directory will have the following structure.
|
223
|
+
|
224
|
+
```shell
|
225
|
+
% tree public
|
226
|
+
public/
|
227
|
+
└── assets
|
228
|
+
├── reset.css
|
229
|
+
└── main.css
|
230
|
+
```
|
231
|
+
|
232
|
+
### Preprocessors engines
|
233
|
+
|
234
|
+
`Lotus::Assets` uses [Tilt](https://github.com/rtomayko/tilt) to provide support for the most common preprocessors, such as [Sass](http://sass-lang.com/) (including `sassc-ruby`), [Less](http://lesscss.org/), ES6, [JSX](https://jsx.github.io/), [CoffeScript](http://coffeescript.org), [Opal](http://opalrb.org), [Handlebars](http://handlebarsjs.com), [JBuilder](https://github.com/rails/jbuilder).
|
235
|
+
|
236
|
+
In order to use one or more of them, be sure to include the corresponding gem into your `Gemfile` and require the library.
|
237
|
+
|
238
|
+
#### EcmaScript 6
|
239
|
+
|
240
|
+
We strongly suggest to use [EcmaScript 6](http://es6-features.org/) for your next project.
|
241
|
+
It isn't fully [supported](https://kangax.github.io/compat-table/es6/) yet by browser vendors, but it's the future of JavaScript.
|
242
|
+
|
243
|
+
As of today, you need to transpile ES6 code into something understandable by current browsers, which is ES5.
|
244
|
+
For this purpose we support [Babel](https://babeljs.io).
|
245
|
+
|
246
|
+
### Deployment
|
247
|
+
|
248
|
+
`Lotus::Assets` ships with an executable (`lotus-assets`), which can be used to precompile assets and make them cacheable by browsers (via checksum suffix).
|
249
|
+
|
250
|
+
Let's say we have an application that has main file that requires the entire code (`config/environment.rb`), a gem that brings Ember.js code, and the following sources:
|
251
|
+
|
252
|
+
```shell
|
253
|
+
% tree .
|
254
|
+
├── apps
|
255
|
+
│ ├── admin
|
256
|
+
│ │ ├── assets
|
257
|
+
│ │ │ └── js
|
258
|
+
│ │ │ ├── application.js
|
259
|
+
│ │ │ └── zepto.js
|
260
|
+
# ...
|
261
|
+
│ ├── metrics
|
262
|
+
│ │ ├── assets
|
263
|
+
│ │ │ └── javascripts
|
264
|
+
│ │ │ └── dashboard.js
|
265
|
+
# ...
|
266
|
+
│ └── web
|
267
|
+
│ ├── assets
|
268
|
+
│ │ ├── images
|
269
|
+
│ │ │ └── bookshelf.jpg
|
270
|
+
│ │ └── javascripts
|
271
|
+
│ │ └── application.js
|
272
|
+
# ...
|
273
|
+
│ └── vendor
|
274
|
+
│ └── assets
|
275
|
+
│ └── javascripts
|
276
|
+
│ └── jquery.js
|
277
|
+
└── config
|
278
|
+
└── environment.rb
|
279
|
+
```
|
280
|
+
|
281
|
+
In order to deploy, we can run:
|
282
|
+
|
283
|
+
```shell
|
284
|
+
bundle exec lotus-assets --config=config/environment.rb
|
285
|
+
```
|
286
|
+
|
287
|
+
It will output:
|
288
|
+
|
289
|
+
```shell
|
290
|
+
tree public
|
291
|
+
public
|
292
|
+
├── assets
|
293
|
+
│ ├── admin
|
294
|
+
│ │ ├── application-28a6b886de2372ee3922fcaf3f78f2d8.js
|
295
|
+
│ │ ├── application.js
|
296
|
+
│ │ ├── ember-b2d6de1e99c79a0e52cf5c205aa2e07a.js
|
297
|
+
│ │ ├── ember-source-e74117fc6ba74418b2601ffff9eb1568.js
|
298
|
+
│ │ ├── ember-source.js
|
299
|
+
│ │ ├── ember.js
|
300
|
+
│ │ ├── zepto-ca736a378613d484138dec4e69be99b6.js
|
301
|
+
│ │ └── zepto.js
|
302
|
+
│ ├── application-d1829dc353b734e3adc24855693b70f9.js
|
303
|
+
│ ├── application.js
|
304
|
+
│ ├── bookshelf-237ecbedf745af5a477e380f0232039a.jpg
|
305
|
+
│ ├── bookshelf.jpg
|
306
|
+
│ ├── ember-b2d6de1e99c79a0e52cf5c205aa2e07a.js
|
307
|
+
│ ├── ember-source-e74117fc6ba74418b2601ffff9eb1568.js
|
308
|
+
│ ├── ember-source.js
|
309
|
+
│ ├── ember.js
|
310
|
+
│ ├── jquery-05277a4edea56b7f82a4c1442159e183.js
|
311
|
+
│ ├── jquery.js
|
312
|
+
│ └── metrics
|
313
|
+
│ ├── dashboard-7766a63ececc63a7a629bfb0666e9c62.js
|
314
|
+
│ ├── dashboard.js
|
315
|
+
│ ├── ember-b2d6de1e99c79a0e52cf5c205aa2e07a.js
|
316
|
+
│ ├── ember-source-e74117fc6ba74418b2601ffff9eb1568.js
|
317
|
+
│ ├── ember-source.js
|
318
|
+
│ └── ember.js
|
319
|
+
└── assets.json
|
320
|
+
```
|
321
|
+
|
322
|
+
#### Compressors
|
323
|
+
|
324
|
+
Minification is a process that shrink file size in production, by removing unnecessary spaces and characters.
|
325
|
+
The goal of this step, is to have lighter assets to be served faster to the browsers.
|
326
|
+
|
327
|
+
Lotus supports JavaScript and stylesheets minifiers.
|
328
|
+
|
329
|
+
Because this framework relies on external gems for minification, this feature is **turned off by default**.
|
330
|
+
|
331
|
+
To do so we need to specify which gem we want to use and add it to our `Gemfile`.
|
332
|
+
|
333
|
+
##### JavaScript Compressors
|
334
|
+
|
335
|
+
Lotus can use the following compressors (aka minifiers) for JavaScript.
|
336
|
+
|
337
|
+
* `:builtin` - Ruby based implementation of jsmin. It doesn't require any external gem.
|
338
|
+
* `:yui` - [YUI Compressor](http://yui.github.io/yuicompressor), it depends on [`yui-compressor`](https://rubygems.org/gems/yui-compressor) gem and iπt requires Java 1.4+
|
339
|
+
* `:uglifier` - [UglifyJS](http://lisperator.net/uglifyjs), it depends on [`uglifier`](https://rubygems.org/gems/uglifier) gem and it requires Node.js
|
340
|
+
* `:closure` - [Google Closure Compiler](https://developers.google.com/closure/compiler), it depends on [`closure-compiler`](https://rubygems.org/gems/closure-compiler) gem and it requires Java
|
341
|
+
|
342
|
+
```ruby
|
343
|
+
Lotus::Assets.configure do
|
344
|
+
javascript_compressor :uglifier
|
345
|
+
end
|
346
|
+
```
|
347
|
+
|
348
|
+
##### Stylesheet Compressors
|
349
|
+
|
350
|
+
Lotus can use the following compressors (aka minifiers) for Stylesheet.
|
351
|
+
|
352
|
+
* `:builtin` - Ruby based compressor. It doesn't require any external gem. It's fast, but not an efficient compressor.
|
353
|
+
* `:yui` - [YUI Compressor](http://yui.github.io/yuicompressor), it depends on [`yui-compressor`](https://rubygems.org/gems/yui-compressor) gem and iπt requires Java 1.4+
|
354
|
+
* `:sass` - [Sass](http://sass-lang.com/), it depends on [`sass`](https://rubygems.org/gems/sass) gem
|
355
|
+
|
356
|
+
```ruby
|
357
|
+
Lotus::Assets.configure do
|
358
|
+
stylesheet_compressor :sass
|
359
|
+
end
|
360
|
+
```
|
361
|
+
|
362
|
+
##### Custom Compressors
|
363
|
+
|
364
|
+
We can specify our own minifiers:
|
365
|
+
|
366
|
+
```ruby
|
367
|
+
Lotus::Assets.configure do
|
368
|
+
javascript_compressor MyJavascriptCompressor.new
|
369
|
+
stylesheet_compressor MyStylesheetCompressor.new
|
370
|
+
end
|
371
|
+
```
|
372
|
+
|
373
|
+
### Digest Mode
|
374
|
+
|
375
|
+
This is a mode that can be activated via the configuration and it's suitable for production environments.
|
376
|
+
|
377
|
+
```ruby
|
378
|
+
Lotus::Assets.configure do
|
379
|
+
digest true
|
380
|
+
end
|
381
|
+
```
|
382
|
+
|
383
|
+
Once turned on, it will look at `/public/assets.json`, and helpers such as `javascript` will return a relative URL that includes the digest of the asset.
|
384
|
+
|
385
|
+
```erb
|
386
|
+
<%= javascript 'application' %>
|
387
|
+
```
|
388
|
+
|
389
|
+
```html
|
390
|
+
<script src="/assets/application-d1829dc353b734e3adc24855693b70f9.js" type="text/javascript"></script>
|
391
|
+
```
|
392
|
+
|
393
|
+
### CDN Mode
|
394
|
+
|
395
|
+
A Lotus project can serve assets via CDN.
|
396
|
+
|
397
|
+
```ruby
|
398
|
+
Lotus::Assets.configure do
|
399
|
+
scheme 'https'
|
400
|
+
host '123.cloudfront.net'
|
401
|
+
port 443
|
402
|
+
cdn true
|
403
|
+
end
|
404
|
+
```
|
405
|
+
|
406
|
+
Since now on, helpers will return the CDN absolute URL for the asset.
|
407
|
+
|
408
|
+
```erb
|
409
|
+
<%= javascript 'application' %>
|
410
|
+
```
|
411
|
+
|
412
|
+
```html
|
413
|
+
<script src="https://123.cloudfront.net/assets/application-d1829dc353b734e3adc24855693b70f9.js" type="text/javascript"></script>
|
414
|
+
```
|
415
|
+
|
416
|
+
## Third party gems
|
417
|
+
|
418
|
+
Developers can maintain gems that distribute assets for Lotus. For instance `lotus-ember` or `lotus-jquery`.
|
419
|
+
|
420
|
+
As a gem developer, you must add one or more paths, where the assets are stored inside the gem.
|
421
|
+
|
422
|
+
```ruby
|
423
|
+
# lib/lotus/jquery.rb
|
424
|
+
Lotus::Assets.sources << '/path/to/jquery'
|
425
|
+
```
|
426
|
+
|
427
|
+
## Running tests
|
428
|
+
|
429
|
+
* Make sure you have one of [ExecJS](https://github.com/rails/execjs)
|
430
|
+
supported runtime on your machine.
|
431
|
+
* Java 1.4+
|
432
|
+
|
433
|
+
```sh
|
434
|
+
bundle exec rake test
|
435
|
+
```
|
436
|
+
|
437
|
+
## Versioning
|
438
|
+
|
439
|
+
__Lotus::Assets__ uses [Semantic Versioning 2.0.0](http://semver.org)
|
22
440
|
|
23
441
|
## Contributing
|
24
442
|
|
25
|
-
1. Fork it ( https://github.com/
|
443
|
+
1. Fork it ( https://github.com/lotus/assets/fork )
|
26
444
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
445
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
446
|
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
-
5. Create
|
447
|
+
5. Create new Pull Request
|
448
|
+
|
449
|
+
## Copyright
|
450
|
+
|
451
|
+
Copyright © 2014-2016 Luca Guidi – Released under MIT License
|