rails-lineman 0.1.1 → 0.2.0
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.
- checksums.yaml +4 -4
- data/README.md +15 -0
- data/lib/rails_lineman/asset.rb +42 -0
- data/lib/rails_lineman/lineman_doer.rb +18 -54
- data/lib/rails_lineman/railtie.rb +1 -1
- data/lib/rails_lineman/version.rb +1 -1
- data/lib/tasks/assets_precompile.rake +2 -2
- 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: c09ae443fbfb59c625e0f4fa722ef0d09cca2a65
|
4
|
+
data.tar.gz: bd59365df1100576f3c5010fc8053a3a2a7b57d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e8dd5b4b9ce0ad9f88fa9f9a81e66a6e5a5c921264c8ed1dba7104c9e836e4ef81305a8c3e2913529c98007443ce177adb801f33823d1103434fc5347f6885f3
|
7
|
+
data.tar.gz: 33a965e03d745a86cae21c21d146c52d88ab8c03cb2ca7cbfc0b5976286034a3bf7f2aeca40995deba0ecbe5fa5584d34a93480a27234b96726927fb86c79309
|
data/README.md
CHANGED
@@ -50,3 +50,18 @@ From your templates you'll be able to require lineman-built JS & CSS like so:
|
|
50
50
|
<%= javascript_include_tag "lineman/app" %>
|
51
51
|
```
|
52
52
|
|
53
|
+
## Build environments that don't support node.js
|
54
|
+
|
55
|
+
Sometimes your existing deployment environment will support Ruby (because your
|
56
|
+
app runs there), but will lack a proper Node.js runtime environment. In those
|
57
|
+
cases, you may desire to cook up your own way to push the `dist` directory from
|
58
|
+
your lineman application to your deployment server such that when *it* runs
|
59
|
+
`rake assets:precompile` that the lineman assets will be in the proper place
|
60
|
+
and copied at the appropriate moment despite not having been built on the actual
|
61
|
+
server.
|
62
|
+
|
63
|
+
In cases like these, you may set:
|
64
|
+
|
65
|
+
```
|
66
|
+
config.rails_lineman.skip_build = true
|
67
|
+
```
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module RailsLineman
|
2
|
+
class Asset
|
3
|
+
def initialize(config, descriptor)
|
4
|
+
@descriptor = descriptor.strip
|
5
|
+
@source = File.join(config.lineman_project_location, "dist", descriptor, ".")
|
6
|
+
@destination = destination
|
7
|
+
end
|
8
|
+
|
9
|
+
def destination
|
10
|
+
if is_precompilable?
|
11
|
+
Rails.root.join(File.join("tmp", "rails_lineman", "lineman"))
|
12
|
+
else
|
13
|
+
Rails.root.join(File.join("public", "assets", @descriptor))
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def ensure_directories
|
18
|
+
[@source, @destination].each do |path|
|
19
|
+
FileUtils.mkdir_p(path)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def copy
|
24
|
+
FileUtils.cp_r(@source, @destination)
|
25
|
+
end
|
26
|
+
|
27
|
+
def add_if_precompilable
|
28
|
+
if(is_precompilable?)
|
29
|
+
Rails.application.config.assets.precompile +=
|
30
|
+
Dir.glob("#{@destination}/**/*.#{@descriptor}")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def is_precompilable?
|
35
|
+
["js", "css"].member? @descriptor
|
36
|
+
end
|
37
|
+
|
38
|
+
def delete
|
39
|
+
FileUtils.rm_rf(@destination)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -1,83 +1,47 @@
|
|
1
1
|
require 'pathname'
|
2
2
|
require 'fileutils'
|
3
|
+
require 'rails_lineman/asset'
|
3
4
|
|
4
5
|
module RailsLineman
|
5
|
-
|
6
|
-
class Asset
|
7
|
-
def initialize(config, descriptor)
|
8
|
-
@descriptor = descriptor.strip
|
9
|
-
@source = File.join(config.lineman_project_location, "dist", descriptor, ".")
|
10
|
-
@destination = destination
|
11
|
-
end
|
12
|
-
|
13
|
-
def destination
|
14
|
-
if is_precompilable?
|
15
|
-
Rails.root.join(File.join("tmp", "rails_lineman", "lineman"))
|
16
|
-
else
|
17
|
-
Rails.root.join(File.join("public", "assets", @descriptor))
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def ensure_directories
|
22
|
-
[@source, @destination].each do |path|
|
23
|
-
FileUtils.mkdir_p(path)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def copy
|
28
|
-
FileUtils.cp_r(@source, @destination)
|
29
|
-
end
|
30
|
-
|
31
|
-
def add_if_precompilable
|
32
|
-
if(is_precompilable?)
|
33
|
-
Rails.application.config.assets.precompile +=
|
34
|
-
Dir.glob("#{@destination}/**/*.#{@descriptor}")
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def is_precompilable?
|
39
|
-
["js", "css"].member? @descriptor
|
40
|
-
end
|
41
|
-
|
42
|
-
def delete
|
43
|
-
FileUtils.rm_rf(@destination)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
6
|
class LinemanDoer
|
48
7
|
def initialize(config)
|
49
8
|
gather_assets(config)
|
50
9
|
@lineman_project_location = config.lineman_project_location
|
10
|
+
@skip_build = config.skip_build
|
51
11
|
@tmp_dir = Rails.root.join(config.tmp_dir)
|
52
12
|
@remove_lineman_assets_after_asset_pipeline_precompilation = config.remove_lineman_assets_after_asset_pipeline_precompilation
|
53
13
|
end
|
54
14
|
|
15
|
+
def precompile_assets
|
16
|
+
absolutify_lineman_path
|
17
|
+
perform_lineman_build unless @skip_build
|
18
|
+
ensure_directories_exist
|
19
|
+
copy
|
20
|
+
add_to_precompile_list
|
21
|
+
end
|
22
|
+
|
23
|
+
def destroy_assets
|
24
|
+
delete_some_assets_for_whatever_reason if @remove_lineman_assets_after_asset_pipeline_precompilation
|
25
|
+
delete_tmp_dir
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
55
30
|
def gather_assets(config)
|
56
31
|
@assets = config.lineman_assets.collect do |d|
|
57
32
|
Asset.new(config, d.to_s)
|
58
33
|
end
|
59
34
|
end
|
60
35
|
|
61
|
-
def
|
62
|
-
absolutify_lineman_path
|
36
|
+
def perform_lineman_build
|
63
37
|
chdir @lineman_project_location do
|
64
38
|
install_node_js_on_heroku
|
65
39
|
run_npm_install
|
66
40
|
run_lineman_build
|
67
41
|
delete_node_js_from_heroku
|
68
42
|
end
|
69
|
-
ensure_directories_exist
|
70
|
-
copy
|
71
|
-
add_to_precompile_list
|
72
|
-
end
|
73
|
-
|
74
|
-
def destroy
|
75
|
-
delete_some_assets_for_whatever_reason if @remove_lineman_assets_after_asset_pipeline_precompilation
|
76
|
-
delete_tmp_dir
|
77
43
|
end
|
78
44
|
|
79
|
-
private
|
80
|
-
|
81
45
|
def absolutify_lineman_path
|
82
46
|
@lineman_project_location = Pathname.new(@lineman_project_location).realpath.to_s
|
83
47
|
rescue => error
|
@@ -5,7 +5,7 @@ module RailsLineman
|
|
5
5
|
config.rails_lineman.lineman_project_location = ENV['LINEMAN_PROJECT_LOCATION']
|
6
6
|
config.rails_lineman.lineman_assets = ENV['LINEMAN_ASSETS'] || [:js, :css]
|
7
7
|
config.rails_lineman.remove_lineman_assets_after_asset_pipeline_precompilation = false
|
8
|
-
|
8
|
+
config.rails_lineman.skip_build = false
|
9
9
|
config.rails_lineman.tmp_dir = File.join("tmp", "rails_lineman")
|
10
10
|
config.rails_lineman.asset_paths = [ config.rails_lineman.tmp_dir ]
|
11
11
|
|
@@ -7,10 +7,10 @@ namespace :assets do
|
|
7
7
|
RailsLineman::TaskHelpers.override_task :precompile => :environment do
|
8
8
|
begin
|
9
9
|
lineman_doer = RailsLineman::LinemanDoer.new(Rails.application.config.rails_lineman)
|
10
|
-
lineman_doer.
|
10
|
+
lineman_doer.precompile_assets
|
11
11
|
Rake::Task["assets:precompile:original"].execute
|
12
12
|
ensure
|
13
|
-
lineman_doer.
|
13
|
+
lineman_doer.destroy_assets
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails-lineman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Searls
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -52,6 +52,7 @@ files:
|
|
52
52
|
- README.md
|
53
53
|
- Rakefile
|
54
54
|
- lib/rails-lineman.rb
|
55
|
+
- lib/rails_lineman/asset.rb
|
55
56
|
- lib/rails_lineman/ext/rake/task_manager.rb
|
56
57
|
- lib/rails_lineman/lineman_doer.rb
|
57
58
|
- lib/rails_lineman/railtie.rb
|