rail 0.0.1 → 0.0.2
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/.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 [](http://badge.fury.io/rb/rail) [](https://gemnasium.com/IvanUkhov/rail) [](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
|