rail 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +10 -0
- data/CHANGELOG.md +9 -0
- data/README.md +63 -3
- data/Rakefile +7 -1
- data/lib/rail/application.rb +106 -0
- data/lib/rail/browser.rb +24 -0
- data/lib/rail/pipeline.rb +85 -0
- data/lib/rail/request.rb +17 -0
- data/lib/rail/server.rb +13 -0
- data/lib/rail/support.rb +7 -0
- data/lib/rail/tasks/assets.rake +4 -0
- data/lib/rail/tasks/server.rake +4 -0
- data/lib/rail/version.rb +1 -1
- data/lib/rail.rb +41 -1
- data/rail.gemspec +12 -3
- data/spec/coffee_spec.rb +42 -0
- data/spec/haml_spec.rb +42 -0
- data/spec/project/app/assets/javascripts/application.js.coffee +3 -0
- data/spec/project/app/assets/javascripts/font.coffee +2 -0
- data/spec/project/app/assets/stylesheets/_reset.scss +4 -0
- data/spec/project/app/assets/stylesheets/application.css.scss +5 -0
- data/spec/project/app/views/layouts/application.html.haml +6 -0
- data/spec/project/config/application.rb +6 -0
- data/spec/project/controller.rb +13 -0
- data/spec/sass_spec.rb +31 -0
- metadata +114 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04be69f5c4562508756c30d288dca2ce37c6cf7a
|
4
|
+
data.tar.gz: 24a0eda65d4bc3dbfab7b2c0e31be0c589a91693
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b37d9436041a7b221de1b63dc04bd7b7cc3d5236d6acd0bf523480b27e55450165f2eb00193a8d48fe669ff5d1c2e7b471db68ea543cd04133068d5ae24ee4b
|
7
|
+
data.tar.gz: a7f557a6659f7ccec10f5e8d506d17b3d5db1c01d12ebbedd9e337fd8d2754a98e69f6f096505f3185795231b7cad8eb2c4b5d547bffd3ccb42c48105d2ee9cd
|
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
## Typekit 0.0.2 (June 21, 2014)
|
2
|
+
* The first actual release. A happy union of
|
3
|
+
[CoffeeScript](http://coffeescript.org/),
|
4
|
+
[Haml](http://haml.info/),
|
5
|
+
[Sass](http://sass-lang.com/), and
|
6
|
+
[Uglifier](https://github.com/lautis/uglifier).
|
7
|
+
|
8
|
+
## Typekit 0.0.1 (June 20, 2014)
|
9
|
+
* Less is more. A dummy release.
|
data/README.md
CHANGED
@@ -1,8 +1,68 @@
|
|
1
|
-
# Rail
|
2
|
-
|
1
|
+
# Rail [![Gem Version](https://badge.fury.io/rb/rail.svg)](http://badge.fury.io/rb/rail) [![Dependency Status](https://gemnasium.com/IvanUkhov/rail.svg)](https://gemnasium.com/IvanUkhov/rail) [![Build Status](https://travis-ci.org/IvanUkhov/rail.svg?branch=master)](https://travis-ci.org/IvanUkhov/rail)
|
2
|
+
A light framework for front-end development inspired by
|
3
|
+
[Rails](http://rubyonrails.org/). It is solely based on
|
4
|
+
[Sprockets](https://github.com/sstephenson/sprockets) and includes the
|
5
|
+
following components out of the box:
|
6
|
+
* [CoffeeScript](http://coffeescript.org/) for JavaScript,
|
7
|
+
* [Haml](http://haml.info/) for HTML,
|
8
|
+
* [Sass](http://sass-lang.com/) for CSS, and
|
9
|
+
* [Uglifier](https://github.com/lautis/uglifier) for compression.
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
First of all, include the gem in your `Gemfile`. Here is an example:
|
13
|
+
```ruby
|
14
|
+
source 'https://rubygems.org'
|
15
|
+
|
16
|
+
gem 'rail', '~> 0.0.2'
|
17
|
+
|
18
|
+
# The rest is optional
|
19
|
+
gem 'redcarpet', '~> 3.1.2' # your favorit complement to Haml
|
20
|
+
gem 'thin', '~> 1.6.2' # your favorit Web server
|
21
|
+
```
|
22
|
+
|
23
|
+
Then run [Bundler](http://bundler.io/):
|
24
|
+
```bash
|
25
|
+
$ bundle
|
26
|
+
```
|
27
|
+
|
28
|
+
Now we need to create two files: `config.ru` and `config/application.rb`.
|
29
|
+
In `config.ru`:
|
30
|
+
```ruby
|
31
|
+
require_relative 'config/application'
|
32
|
+
|
33
|
+
run MyProject::Application.new
|
34
|
+
```
|
35
|
+
|
36
|
+
In `config/application.rb`:
|
37
|
+
```ruby
|
38
|
+
require 'bundler'
|
39
|
+
Bundler.require(:default)
|
40
|
+
|
41
|
+
module MyProject
|
42
|
+
class Application < Rail::Application
|
43
|
+
end
|
44
|
+
end
|
45
|
+
```
|
46
|
+
|
47
|
+
Feel free to replace `MyProject` with the name of your project. That’s it.
|
48
|
+
|
49
|
+
## Usage
|
50
|
+
Rail closely follows Rails. If you know Rails, you already know how to use
|
51
|
+
Rail. Organize your code according to the following convention:
|
52
|
+
* scripts in `app/assets/javascripts`,
|
53
|
+
* styles in `app/assets/stylesheets`,
|
54
|
+
* views in `app/views`, and
|
55
|
+
* helpers in `app/helpers`.
|
56
|
+
|
57
|
+
In addition, `app/views/layouts/application.html.haml` will be used for
|
58
|
+
rendering the root of your application (both `/` and `/index.html`).
|
59
|
+
|
60
|
+
Usage examples can be found [here](https://github.com/IvanUkhov/type-works),
|
61
|
+
[here](https://github.com/IvanUkhov/photography), and
|
62
|
+
[here](https://github.com/IvanUkhov/liu-profile).
|
3
63
|
|
4
64
|
## Contributing
|
5
|
-
1. [Fork](https://help.github.com/articles/fork-a-repo)
|
65
|
+
1. [Fork](https://help.github.com/articles/fork-a-repo) the project.
|
6
66
|
2. Create a branch for your feature (`git checkout -b awesome-feature`).
|
7
67
|
3. Implement your feature (`vim`).
|
8
68
|
4. Commit your changes (`git commit -am 'Implemented an awesome feature'`).
|
data/Rakefile
CHANGED
@@ -0,0 +1,106 @@
|
|
1
|
+
module Rail
|
2
|
+
class Application
|
3
|
+
extend Forwardable
|
4
|
+
|
5
|
+
attr_reader :browser, :pipeline
|
6
|
+
def_delegators :config, :root, :gems, :compress?
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
# config.ru
|
10
|
+
config.root ||= self.class.find_root
|
11
|
+
|
12
|
+
@browser = Browser.new(self)
|
13
|
+
@pipeline = Pipeline.new(self)
|
14
|
+
end
|
15
|
+
|
16
|
+
def call(env)
|
17
|
+
request = Request.new(env)
|
18
|
+
(browser.accept?(request) ? browser : pipeline).process(request)
|
19
|
+
end
|
20
|
+
|
21
|
+
def helpers
|
22
|
+
@helpers ||= load_helpers
|
23
|
+
end
|
24
|
+
|
25
|
+
def config
|
26
|
+
self.class.config
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.config
|
30
|
+
@config ||= build_config
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.load_tasks
|
34
|
+
# Rakefile
|
35
|
+
config.root ||= find_root
|
36
|
+
|
37
|
+
Dir[File.join(File.dirname(__FILE__), 'tasks/*.rake')].each do |path|
|
38
|
+
Rake::load_rakefile(path)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.precompile
|
43
|
+
return if config.precompile.empty?
|
44
|
+
|
45
|
+
application = self.new
|
46
|
+
|
47
|
+
puts 'Precompiling assets...'
|
48
|
+
puts
|
49
|
+
|
50
|
+
config.precompile.each do |path|
|
51
|
+
file = File.join('public', path)
|
52
|
+
unless File.exist?(File.dirname(file))
|
53
|
+
FileUtils.mkdir_p(File.dirname(file))
|
54
|
+
end
|
55
|
+
|
56
|
+
puts "#{ path } -> #{ file }"
|
57
|
+
|
58
|
+
_, _, source = application.call('PATH_INFO' => path)
|
59
|
+
|
60
|
+
File.open(file, 'w') { |f| f.write(source.to_s) }
|
61
|
+
end
|
62
|
+
|
63
|
+
puts
|
64
|
+
puts 'Done.'
|
65
|
+
end
|
66
|
+
|
67
|
+
def self.find_root
|
68
|
+
File.expand_path('..', caller[1].sub(/:.*/, ''))
|
69
|
+
end
|
70
|
+
|
71
|
+
private
|
72
|
+
|
73
|
+
def load_helpers
|
74
|
+
Dir[File.join(root, 'app/helpers/*.rb')].map do |file|
|
75
|
+
require file
|
76
|
+
Support.constantize(File.basename(file, '.rb'))
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def self.default_options
|
81
|
+
{
|
82
|
+
gems: [],
|
83
|
+
precompile: [],
|
84
|
+
compress: Rail.env.production?
|
85
|
+
}
|
86
|
+
end
|
87
|
+
|
88
|
+
def self.build_config
|
89
|
+
struct = OpenStruct.new
|
90
|
+
|
91
|
+
struct.singleton_class.class_eval do
|
92
|
+
define_method(:method_missing) do |name, *arguments, &block|
|
93
|
+
!!super(name.to_s.sub(/\?$/, '').to_sym, *arguments, &block)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
default_options.each do |name, value|
|
98
|
+
struct.send("#{ name }=", value)
|
99
|
+
end
|
100
|
+
|
101
|
+
struct
|
102
|
+
end
|
103
|
+
|
104
|
+
private_class_method :default_options, :build_config
|
105
|
+
end
|
106
|
+
end
|
data/lib/rail/browser.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'rack'
|
2
|
+
|
3
|
+
module Rail
|
4
|
+
class Browser
|
5
|
+
extend Forwardable
|
6
|
+
|
7
|
+
def_delegator :@host, :root
|
8
|
+
def_delegator :@directory, :call
|
9
|
+
|
10
|
+
def initialize(host)
|
11
|
+
@host = host
|
12
|
+
@directory ||= Rack::Directory.new(File.join(root, 'public'))
|
13
|
+
end
|
14
|
+
|
15
|
+
def process(request)
|
16
|
+
call(request.env)
|
17
|
+
end
|
18
|
+
|
19
|
+
def accept?(request)
|
20
|
+
path = request.path
|
21
|
+
!path.empty? && File.exist?(File.join(root, 'public', path))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
module Rail
|
2
|
+
class Pipeline
|
3
|
+
extend Forwardable
|
4
|
+
|
5
|
+
def_delegators :@host, :root, :gems, :helpers, :compress?
|
6
|
+
|
7
|
+
def initialize(host)
|
8
|
+
@host = host
|
9
|
+
end
|
10
|
+
|
11
|
+
def process(request)
|
12
|
+
Thread.current[:request] = request
|
13
|
+
|
14
|
+
path = request.path
|
15
|
+
|
16
|
+
case path
|
17
|
+
when '', 'index.html'
|
18
|
+
path = 'layouts/application'
|
19
|
+
end
|
20
|
+
|
21
|
+
path = "#{ path }.html" if File.extname(path).empty?
|
22
|
+
|
23
|
+
asset = sprockets[path]
|
24
|
+
code, body = asset ? [ 200, asset ] : [ 404, [ 'Not found' ] ]
|
25
|
+
|
26
|
+
[ code, {}, body ]
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def sprockets
|
32
|
+
@sprockets ||= build_sprockets
|
33
|
+
end
|
34
|
+
|
35
|
+
def build_sprockets
|
36
|
+
environment = Sprockets::Environment.new
|
37
|
+
|
38
|
+
paths.each do |directory|
|
39
|
+
environment.append_path(directory)
|
40
|
+
end
|
41
|
+
|
42
|
+
if compress?
|
43
|
+
environment.js_compressor = :uglify
|
44
|
+
environment.css_compressor = :scss
|
45
|
+
end
|
46
|
+
|
47
|
+
# TODO: Find a per-instance way to configure HAML.
|
48
|
+
Haml::Options.defaults[:ugly] = compress?
|
49
|
+
|
50
|
+
helpers.each do |helper|
|
51
|
+
environment.context_class.class_eval do
|
52
|
+
include helper
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
environment.context_class.class_eval do
|
57
|
+
define_method(:request) do
|
58
|
+
Thread.current[:request]
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
environment
|
63
|
+
end
|
64
|
+
|
65
|
+
def paths
|
66
|
+
(application_paths + gems.map { |name| gem_paths(name) }).flatten
|
67
|
+
end
|
68
|
+
|
69
|
+
def application_paths
|
70
|
+
[
|
71
|
+
File.join(root, 'app/assets/javascripts'),
|
72
|
+
File.join(root, 'app/assets/stylesheets'),
|
73
|
+
File.join(root, 'app/views')
|
74
|
+
]
|
75
|
+
end
|
76
|
+
|
77
|
+
def gem_paths(name)
|
78
|
+
gem = Gem::Specification.find_by_name(name)
|
79
|
+
[
|
80
|
+
File.join(gem.gem_dir, 'lib/assets/javascripts'),
|
81
|
+
File.join(gem.gem_dir, 'lib/assets/stylesheets')
|
82
|
+
]
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
data/lib/rail/request.rb
ADDED
data/lib/rail/server.rb
ADDED
data/lib/rail/support.rb
ADDED
data/lib/rail/version.rb
CHANGED
data/lib/rail.rb
CHANGED
@@ -1,4 +1,44 @@
|
|
1
|
-
require '
|
1
|
+
require 'ostruct'
|
2
|
+
require 'forwardable'
|
3
|
+
|
4
|
+
require 'rack'
|
5
|
+
require 'haml'
|
6
|
+
require 'uglifier'
|
7
|
+
require 'sprockets'
|
8
|
+
|
9
|
+
require_relative 'rail/application'
|
10
|
+
require_relative 'rail/browser'
|
11
|
+
require_relative 'rail/pipeline'
|
12
|
+
require_relative 'rail/request'
|
13
|
+
require_relative 'rail/server'
|
14
|
+
require_relative 'rail/support'
|
15
|
+
require_relative 'rail/version'
|
16
|
+
|
17
|
+
Sprockets.register_engine('.haml', Tilt::HamlTemplate)
|
2
18
|
|
3
19
|
module Rail
|
20
|
+
def self.env
|
21
|
+
@env ||= build_env
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.applications
|
25
|
+
ObjectSpace.each_object(Class).select do |klass|
|
26
|
+
klass < Application
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def self.build_env
|
33
|
+
string = ENV['RAIL_ENV'] ? ENV['RAIL_ENV'].dup : 'development'
|
34
|
+
|
35
|
+
string.singleton_class.class_eval do
|
36
|
+
define_method(:method_missing) do |name, *arguments, &block|
|
37
|
+
super unless name.to_s =~ /^(?<name>.+)\?$/
|
38
|
+
self == Regexp.last_match(:name)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
string
|
43
|
+
end
|
4
44
|
end
|
data/rail.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Rail::VERSION
|
9
9
|
spec.authors = [ 'Ivan Ukhov' ]
|
10
10
|
spec.email = [ 'ivan.ukhov@gmail.com' ]
|
11
|
-
spec.summary = '
|
12
|
-
spec.description = '
|
11
|
+
spec.summary = 'A light framework for front-end development'
|
12
|
+
spec.description = 'A light framework for front-end development'
|
13
13
|
spec.homepage = 'https://github.com/IvanUkhov/rail'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
@@ -18,6 +18,15 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^spec/})
|
19
19
|
spec.require_paths = [ 'lib' ]
|
20
20
|
|
21
|
+
spec.add_dependency 'rake'
|
22
|
+
|
23
|
+
spec.add_dependency 'sprockets', '~> 2.12'
|
24
|
+
|
25
|
+
spec.add_dependency 'coffee-script', '~> 2.2'
|
26
|
+
spec.add_dependency 'haml', '~> 4.0'
|
27
|
+
spec.add_dependency 'sass', '~> 3.3'
|
28
|
+
|
29
|
+
spec.add_dependency 'uglifier', '~> 2.5'
|
30
|
+
|
21
31
|
spec.add_development_dependency 'bundler', '~> 1.6'
|
22
|
-
spec.add_development_dependency 'rake'
|
23
32
|
end
|
data/spec/coffee_spec.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'minitest/spec'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
|
4
|
+
require_relative 'project/controller'
|
5
|
+
|
6
|
+
describe Rail::Application do
|
7
|
+
it 'handles uncompressed CoffeeScript assets' do
|
8
|
+
controller = Controller.new do
|
9
|
+
config.compress = false
|
10
|
+
end
|
11
|
+
body = controller.process('/application.js')
|
12
|
+
assert_equal body.strip, <<-BODY.strip
|
13
|
+
(function() {
|
14
|
+
window.Font = (function() {
|
15
|
+
function Font(name) {
|
16
|
+
this.name = name;
|
17
|
+
}
|
18
|
+
|
19
|
+
return Font;
|
20
|
+
|
21
|
+
})();
|
22
|
+
|
23
|
+
}).call(this);
|
24
|
+
(function() {
|
25
|
+
var font;
|
26
|
+
|
27
|
+
font = new Font('Benton Modern Display');
|
28
|
+
|
29
|
+
}).call(this);
|
30
|
+
BODY
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'handles compressed CoffeeScript assets' do
|
34
|
+
controller = Controller.new do
|
35
|
+
config.compress = true
|
36
|
+
end
|
37
|
+
body = controller.process('/application.js')
|
38
|
+
assert_equal body.strip, <<-BODY.strip
|
39
|
+
(function(){window.Font=function(){function n(n){this.name=n}return n}()}).call(this),function(){var n;n=new Font(\"Benton Modern Display\")}.call(this);
|
40
|
+
BODY
|
41
|
+
end
|
42
|
+
end
|
data/spec/haml_spec.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'minitest/spec'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
|
4
|
+
require_relative 'project/controller'
|
5
|
+
|
6
|
+
describe Rail::Application do
|
7
|
+
it 'handles uncompressed Haml assets' do
|
8
|
+
controller = Controller.new do
|
9
|
+
config.compress = false
|
10
|
+
end
|
11
|
+
body = controller.process('/')
|
12
|
+
assert_equal body.strip, <<-BODY.strip
|
13
|
+
<!DOCTYPE html>
|
14
|
+
<html>
|
15
|
+
<head>
|
16
|
+
<title>Hello</title>
|
17
|
+
</head>
|
18
|
+
<body>
|
19
|
+
<h1>Hello</h1>
|
20
|
+
</body>
|
21
|
+
</html>
|
22
|
+
BODY
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'handles compressed Haml assets' do
|
26
|
+
controller = Controller.new do
|
27
|
+
config.compress = true
|
28
|
+
end
|
29
|
+
body = controller.process('/')
|
30
|
+
assert_equal body.strip, <<-BODY.strip
|
31
|
+
<!DOCTYPE html>
|
32
|
+
<html>
|
33
|
+
<head>
|
34
|
+
<title>Hello</title>
|
35
|
+
</head>
|
36
|
+
<body>
|
37
|
+
<h1>Hello</h1>
|
38
|
+
</body>
|
39
|
+
</html>
|
40
|
+
BODY
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative 'config/application'
|
2
|
+
|
3
|
+
class Controller
|
4
|
+
def initialize(&block)
|
5
|
+
Project::Application.class_eval(&block) if block
|
6
|
+
@application = Project::Application.new
|
7
|
+
end
|
8
|
+
|
9
|
+
def process(path)
|
10
|
+
_, _, body = @application.call('PATH_INFO' => path)
|
11
|
+
body.to_s
|
12
|
+
end
|
13
|
+
end
|
data/spec/sass_spec.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'minitest/spec'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
|
4
|
+
require_relative 'project/controller'
|
5
|
+
|
6
|
+
describe Rail::Application do
|
7
|
+
it 'handles uncompressed Sass assests' do
|
8
|
+
controller = Controller.new do
|
9
|
+
config.compress = false
|
10
|
+
end
|
11
|
+
body = controller.process('/application.css')
|
12
|
+
assert_equal body.strip, <<-BODY.strip
|
13
|
+
* {
|
14
|
+
margin: 0;
|
15
|
+
padding: 0; }
|
16
|
+
|
17
|
+
body {
|
18
|
+
font-family: 'Benton Modern Display'; }
|
19
|
+
BODY
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'handles compressed Sass assets' do
|
23
|
+
controller = Controller.new do
|
24
|
+
config.compress = true
|
25
|
+
end
|
26
|
+
body = controller.process('/application.css')
|
27
|
+
assert_equal body.strip, <<-BODY.strip
|
28
|
+
*{margin:0;padding:0}body{font-family:'Benton Modern Display'}
|
29
|
+
BODY
|
30
|
+
end
|
31
|
+
end
|
metadata
CHANGED
@@ -1,44 +1,114 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Ukhov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: sprockets
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
31
|
- - "~>"
|
18
32
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
-
type: :
|
33
|
+
version: '2.12'
|
34
|
+
type: :runtime
|
21
35
|
prerelease: false
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
23
37
|
requirements:
|
24
38
|
- - "~>"
|
25
39
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
40
|
+
version: '2.12'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
42
|
+
name: coffee-script
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
|
-
- - "
|
45
|
+
- - "~>"
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
47
|
+
version: '2.2'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.2'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: haml
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '4.0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '4.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: sass
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.3'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.3'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: uglifier
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '2.5'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '2.5'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: bundler
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1.6'
|
34
104
|
type: :development
|
35
105
|
prerelease: false
|
36
106
|
version_requirements: !ruby/object:Gem::Requirement
|
37
107
|
requirements:
|
38
|
-
- - "
|
108
|
+
- - "~>"
|
39
109
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
41
|
-
description:
|
110
|
+
version: '1.6'
|
111
|
+
description: A light framework for front-end development
|
42
112
|
email:
|
43
113
|
- ivan.ukhov@gmail.com
|
44
114
|
executables: []
|
@@ -46,13 +116,33 @@ extensions: []
|
|
46
116
|
extra_rdoc_files: []
|
47
117
|
files:
|
48
118
|
- ".gitignore"
|
119
|
+
- ".travis.yml"
|
120
|
+
- CHANGELOG.md
|
49
121
|
- Gemfile
|
50
122
|
- LICENSE.txt
|
51
123
|
- README.md
|
52
124
|
- Rakefile
|
53
125
|
- lib/rail.rb
|
126
|
+
- lib/rail/application.rb
|
127
|
+
- lib/rail/browser.rb
|
128
|
+
- lib/rail/pipeline.rb
|
129
|
+
- lib/rail/request.rb
|
130
|
+
- lib/rail/server.rb
|
131
|
+
- lib/rail/support.rb
|
132
|
+
- lib/rail/tasks/assets.rake
|
133
|
+
- lib/rail/tasks/server.rake
|
54
134
|
- lib/rail/version.rb
|
55
135
|
- rail.gemspec
|
136
|
+
- spec/coffee_spec.rb
|
137
|
+
- spec/haml_spec.rb
|
138
|
+
- spec/project/app/assets/javascripts/application.js.coffee
|
139
|
+
- spec/project/app/assets/javascripts/font.coffee
|
140
|
+
- spec/project/app/assets/stylesheets/_reset.scss
|
141
|
+
- spec/project/app/assets/stylesheets/application.css.scss
|
142
|
+
- spec/project/app/views/layouts/application.html.haml
|
143
|
+
- spec/project/config/application.rb
|
144
|
+
- spec/project/controller.rb
|
145
|
+
- spec/sass_spec.rb
|
56
146
|
homepage: https://github.com/IvanUkhov/rail
|
57
147
|
licenses:
|
58
148
|
- MIT
|
@@ -76,5 +166,15 @@ rubyforge_project:
|
|
76
166
|
rubygems_version: 2.2.2
|
77
167
|
signing_key:
|
78
168
|
specification_version: 4
|
79
|
-
summary:
|
80
|
-
test_files:
|
169
|
+
summary: A light framework for front-end development
|
170
|
+
test_files:
|
171
|
+
- spec/coffee_spec.rb
|
172
|
+
- spec/haml_spec.rb
|
173
|
+
- spec/project/app/assets/javascripts/application.js.coffee
|
174
|
+
- spec/project/app/assets/javascripts/font.coffee
|
175
|
+
- spec/project/app/assets/stylesheets/_reset.scss
|
176
|
+
- spec/project/app/assets/stylesheets/application.css.scss
|
177
|
+
- spec/project/app/views/layouts/application.html.haml
|
178
|
+
- spec/project/config/application.rb
|
179
|
+
- spec/project/controller.rb
|
180
|
+
- spec/sass_spec.rb
|