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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 93d14e771035c69b8d4b07f87a83588cab03cb94
4
- data.tar.gz: 7bbf4ca60a96a5cfecee833c04cc4a36d96ed8c8
3
+ metadata.gz: 04be69f5c4562508756c30d288dca2ce37c6cf7a
4
+ data.tar.gz: 24a0eda65d4bc3dbfab7b2c0e31be0c589a91693
5
5
  SHA512:
6
- metadata.gz: abc138b55bdec89cb3a60e50988ecb2a8093d231d9b79849b062236ba5946eecdeb9b5124d0af06ea1825515b57622a8eb81e9f17ec2cdd942b82ec6c99dc339
7
- data.tar.gz: 977f3b41b3a493fc7db4c4733d67475b08ed9b8d1ff39578bf7b29b0d4a6b796756a19008de75fdd0abee87dc603990d0983fdfbb377ee7a49463ca0c5d744c1
6
+ metadata.gz: 7b37d9436041a7b221de1b63dc04bd7b7cc3d5236d6acd0bf523480b27e55450165f2eb00193a8d48fe669ff5d1c2e7b471db68ea543cd04133068d5ae24ee4b
7
+ data.tar.gz: a7f557a6659f7ccec10f5e8d506d17b3d5db1c01d12ebbedd9e337fd8d2754a98e69f6f096505f3185795231b7cad8eb2c4b5d547bffd3ccb42c48105d2ee9cd
data/.travis.yml ADDED
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 1.9.3
5
+ - 2.0.0
6
+ - 2.1.0
7
+
8
+ branches:
9
+ only:
10
+ - master
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
- Less is more.
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) this repository.
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
@@ -1,4 +1,10 @@
1
1
  require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
2
3
 
3
- task :default do
4
+ Rake::TestTask.new do |test|
5
+ test.libs.push('lib')
6
+ test.test_files = FileList[ 'spec/*_spec.rb' ]
7
+ test.verbose = true
4
8
  end
9
+
10
+ task :default => :test
@@ -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
@@ -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
@@ -0,0 +1,17 @@
1
+ module Rail
2
+ class Request
3
+ attr_reader :env
4
+
5
+ def initialize(env)
6
+ @env = env
7
+ end
8
+
9
+ def path
10
+ @path ||= env['PATH_INFO'].sub(/^\//, '').sub(/\?.*$/, '')
11
+ end
12
+
13
+ def host
14
+ env['HTTP_HOST']
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,13 @@
1
+ module Rail
2
+ class Server < Rack::Server
3
+ def initialize(options = nil)
4
+ options = {
5
+ Port: 3000,
6
+ environment: Rail.env,
7
+ config: 'config.ru'
8
+ }.merge(options || {})
9
+
10
+ super(options)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ module Rail
2
+ module Support
3
+ def self.constantize(name)
4
+ const_get(name.split(/[\s_]+/).map(&:capitalize).join)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,4 @@
1
+ desc 'Precompile assets'
2
+ task :assets do
3
+ Rail.applications.first.precompile
4
+ end
@@ -0,0 +1,4 @@
1
+ desc 'Start server'
2
+ task :server do
3
+ Rail::Server.start
4
+ end
data/lib/rail/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rail
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
data/lib/rail.rb CHANGED
@@ -1,4 +1,44 @@
1
- require 'rail/version'
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 = 'Less is more'
12
- spec.description = 'Less is more'
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
@@ -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,3 @@
1
+ #= require 'font'
2
+
3
+ font = new Font('Benton Modern Display')
@@ -0,0 +1,2 @@
1
+ class window.Font
2
+ constructor: (@name) ->
@@ -0,0 +1,4 @@
1
+ * {
2
+ margin: 0;
3
+ padding: 0;
4
+ }
@@ -0,0 +1,5 @@
1
+ @import 'reset';
2
+
3
+ body {
4
+ font-family: 'Benton Modern Display';
5
+ }
@@ -0,0 +1,6 @@
1
+ !!! 5
2
+ %html
3
+ %head
4
+ %title Hello
5
+ %body
6
+ %h1 Hello
@@ -0,0 +1,6 @@
1
+ require 'rail'
2
+
3
+ module Project
4
+ class Application < Rail::Application
5
+ end
6
+ 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.1
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-20 00:00:00.000000000 Z
11
+ date: 2014-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
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: '1.6'
20
- type: :development
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: '1.6'
40
+ version: '2.12'
27
41
  - !ruby/object:Gem::Dependency
28
- name: rake
42
+ name: coffee-script
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - ">="
45
+ - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '0'
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: '0'
41
- description: Less is more
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: Less is more
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