rail 0.0.6 → 0.0.7
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/CHANGELOG.md +5 -1
- data/README.md +41 -7
- data/bin/rail +19 -0
- data/lib/generator.rb +73 -0
- data/lib/rail/generator.rb +47 -0
- data/lib/rail/templates/Gemfile +3 -0
- data/lib/rail/templates/Rakefile.erb +3 -0
- data/lib/rail/templates/app/assets/javascripts/application.js.coffee +0 -0
- data/lib/rail/templates/app/assets/stylesheets/application.css.scss +0 -0
- data/lib/rail/templates/app/helpers/application_helper.rb +2 -0
- data/lib/rail/templates/app/views/layouts/application.html.haml.erb +10 -0
- data/lib/rail/templates/config/application.rb.erb +17 -0
- data/lib/rail/templates/config.ru.erb +3 -0
- data/lib/rail/templates/public/favicon.png +0 -0
- data/lib/rail/version.rb +1 -1
- metadata +16 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a66f7d5b9a7e1436ce075bcf244d8c020b14b29
|
4
|
+
data.tar.gz: 0bff180762f3b1be3d8193e8a36cb810ebc39980
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8779ed872c394c8df542f8d15277b235e7c1de0936ead82e8b1c6e6fb129b312d6789ae7f5dd8f3a0d83d7d41de8b2f20d21c12a4d939fee8033559ebcb3dc4a
|
7
|
+
data.tar.gz: facff4a130a3574032a7b1e5fdd52c5210dff76929260dcd6ad7df54a12f0208d463fbce56cce13525e09960e664c5e9e03ea5a6bfba2b3877f1f9512f9cce51
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -8,28 +8,62 @@ assets, and it includes the following components:
|
|
8
8
|
* [Haml](http://haml.info/) for HTML, and
|
9
9
|
* [Sass](http://sass-lang.com/) for CSS.
|
10
10
|
|
11
|
-
## Installation
|
11
|
+
## Straightforward Installation
|
12
12
|
|
13
|
-
|
13
|
+
Install the gem:
|
14
|
+
|
15
|
+
```bash
|
16
|
+
$ gem install rail
|
17
|
+
```
|
18
|
+
|
19
|
+
Create a new project:
|
20
|
+
|
21
|
+
```bash
|
22
|
+
$ rail new my_project
|
23
|
+
```
|
24
|
+
|
25
|
+
Run [Bundler](http://bundler.io/):
|
26
|
+
|
27
|
+
```bash
|
28
|
+
$ cd ./my_project
|
29
|
+
$ bundle
|
30
|
+
```
|
31
|
+
|
32
|
+
Run the server:
|
33
|
+
|
34
|
+
```bash
|
35
|
+
$ rake server
|
36
|
+
```
|
37
|
+
|
38
|
+
Open `http://localhost:3000` in your browser, see “My Project,” and enjoy.
|
39
|
+
|
40
|
+
Under the hood, the `rail new my_project` command creates a new folder in the
|
41
|
+
current directory called `my_project` and initializes a basic Rail project
|
42
|
+
inside that folder. In this case, `MyProject` is used as the class name of
|
43
|
+
the project. Feel free to replace `my_project` with the name of your project.
|
44
|
+
|
45
|
+
## Manual Installation
|
46
|
+
|
47
|
+
Include the gem in your `Gemfile`:
|
14
48
|
|
15
49
|
```ruby
|
16
50
|
source 'https://rubygems.org'
|
17
51
|
|
18
|
-
gem 'rail', '~> 0.0.
|
52
|
+
gem 'rail', '~> 0.0.7'
|
19
53
|
|
20
54
|
# The rest is optional
|
21
55
|
gem 'redcarpet', '~> 3.1.2' # your favorit complement to Haml
|
22
56
|
gem 'thin', '~> 1.6.2' # your favorit Web server
|
23
57
|
```
|
24
58
|
|
25
|
-
|
59
|
+
Run [Bundler](http://bundler.io/):
|
26
60
|
|
27
61
|
```bash
|
28
62
|
$ bundle
|
29
63
|
```
|
30
64
|
|
31
|
-
|
32
|
-
|
65
|
+
Create three files: `config/application.rb`, `config.ru`, and `Rakefile`.
|
66
|
+
In `config/application.rb`:
|
33
67
|
|
34
68
|
```ruby
|
35
69
|
require 'bundler'
|
@@ -57,7 +91,7 @@ require_relative 'config/application'
|
|
57
91
|
MyProject::Application.load_tasks
|
58
92
|
```
|
59
93
|
|
60
|
-
Feel free to replace `MyProject` with the name of your project.
|
94
|
+
Feel free to replace `MyProject` with the name of your project.
|
61
95
|
|
62
96
|
## Usage
|
63
97
|
|
data/bin/rail
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift(File.expand_path('../../lib', __FILE__))
|
4
|
+
|
5
|
+
require 'rail/generator'
|
6
|
+
|
7
|
+
unless ARGV.length == 2 && ARGV[0] == 'new'
|
8
|
+
puts 'Usage: rail new <project_name>'
|
9
|
+
exit 1
|
10
|
+
end
|
11
|
+
|
12
|
+
begin
|
13
|
+
Rail::Generator.new(root_dir: ARGV[1]).run
|
14
|
+
rescue Rail::Generator::Error => e
|
15
|
+
puts e
|
16
|
+
exit 1
|
17
|
+
end
|
18
|
+
|
19
|
+
# vim: set ft=ruby
|
data/lib/generator.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'ostruct'
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
class Generator
|
6
|
+
attr_reader :root_dir, :template_dir
|
7
|
+
|
8
|
+
def initialize(options)
|
9
|
+
@root_dir = options.fetch(:root_dir)
|
10
|
+
@template_dir = options.fetch(:template_dir)
|
11
|
+
end
|
12
|
+
|
13
|
+
def run(files, locals = {})
|
14
|
+
context = OpenStruct.new(locals)
|
15
|
+
files.each { |file| process(file, context) }
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def process(file, context)
|
21
|
+
source = find(file)
|
22
|
+
destination = route(file)
|
23
|
+
|
24
|
+
directory = File.dirname(destination)
|
25
|
+
unless File.directory?(directory)
|
26
|
+
report(directory)
|
27
|
+
make(directory)
|
28
|
+
end
|
29
|
+
|
30
|
+
report(destination)
|
31
|
+
if template?(file)
|
32
|
+
dump(transform(load(source), context), destination)
|
33
|
+
else
|
34
|
+
copy(source, destination)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def template?(file)
|
39
|
+
File.extname(file) == '.erb'
|
40
|
+
end
|
41
|
+
|
42
|
+
def find(file)
|
43
|
+
File.join(template_dir, file)
|
44
|
+
end
|
45
|
+
|
46
|
+
def route(file)
|
47
|
+
File.join(root_dir, file).gsub(/\.erb$/, '')
|
48
|
+
end
|
49
|
+
|
50
|
+
def report(message)
|
51
|
+
end
|
52
|
+
|
53
|
+
def make(destination)
|
54
|
+
FileUtils.mkdir_p(destination)
|
55
|
+
end
|
56
|
+
|
57
|
+
def copy(source, destination)
|
58
|
+
FileUtils.cp(source, destination)
|
59
|
+
end
|
60
|
+
|
61
|
+
def load(source)
|
62
|
+
File.read(source)
|
63
|
+
end
|
64
|
+
|
65
|
+
def dump(content, destination)
|
66
|
+
File.open(destination, 'w') { |file| file.write(content) }
|
67
|
+
end
|
68
|
+
|
69
|
+
def transform(content, context)
|
70
|
+
context.singleton_class.class_eval('def get_binding; binding; end')
|
71
|
+
ERB.new(content).result(context.get_binding)
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'generator'
|
2
|
+
|
3
|
+
module Rail
|
4
|
+
class Generator < ::Generator
|
5
|
+
Error = Class.new(StandardError)
|
6
|
+
|
7
|
+
FILES = [
|
8
|
+
'app/assets/javascripts/application.js.coffee',
|
9
|
+
'app/assets/stylesheets/application.css.scss',
|
10
|
+
'app/helpers/application_helper.rb',
|
11
|
+
'app/views/layouts/application.html.haml.erb',
|
12
|
+
'config/application.rb.erb',
|
13
|
+
'config.ru.erb',
|
14
|
+
'Gemfile',
|
15
|
+
'public/favicon.png',
|
16
|
+
'Rakefile.erb'
|
17
|
+
]
|
18
|
+
|
19
|
+
def initialize(options)
|
20
|
+
root_dir = options.fetch(:root_dir)
|
21
|
+
template_dir = File.expand_path('../templates', __FILE__)
|
22
|
+
|
23
|
+
project_name = (root_dir.split('/').last || '')
|
24
|
+
.gsub(/^[^a-zA-Z]*/, '')
|
25
|
+
.gsub(/[^\w]/, '')
|
26
|
+
.gsub(/^\w|_\w/, &:upcase)
|
27
|
+
.gsub(/_+/, ' ')
|
28
|
+
|
29
|
+
class_name = project_name.gsub(' ', '')
|
30
|
+
|
31
|
+
@locals = { class_name: class_name, project_name: project_name }
|
32
|
+
|
33
|
+
raise Error, 'The project name is invalid.' if class_name.empty?
|
34
|
+
|
35
|
+
super(root_dir: root_dir, template_dir: template_dir)
|
36
|
+
end
|
37
|
+
|
38
|
+
def run
|
39
|
+
raise Error, 'The directory already exists.' if File.directory?(root_dir)
|
40
|
+
super(FILES, @locals)
|
41
|
+
end
|
42
|
+
|
43
|
+
def report(message)
|
44
|
+
puts "Creating '#{ message }'..."
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
File without changes
|
File without changes
|
@@ -0,0 +1,10 @@
|
|
1
|
+
!!! 5
|
2
|
+
%html
|
3
|
+
%head
|
4
|
+
%meta{ charset: 'utf-8' }
|
5
|
+
%title <%= project_name %>
|
6
|
+
%link{ href: '/application.css', rel: 'stylesheet', media: 'all' }
|
7
|
+
%link{ href: '/favicon.png', rel: 'shortcut icon', type: 'image/png' }
|
8
|
+
%body
|
9
|
+
%h1 <%= project_name %>
|
10
|
+
%script{ src: '/application.js', type: 'text/javascript' }
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
Bundler.require(:default)
|
3
|
+
|
4
|
+
module <%= class_name %>
|
5
|
+
class Application < Rail::Application
|
6
|
+
# Import assets from other gems:
|
7
|
+
# config.gems << 'turbolinks'
|
8
|
+
#
|
9
|
+
# Precompile assets using `rake assets`:
|
10
|
+
# config.precompile << 'application.css'
|
11
|
+
# config.precompile << 'application.js'
|
12
|
+
# config.precompile << 'index.html'
|
13
|
+
#
|
14
|
+
# Compress assets:
|
15
|
+
# config.compress = true
|
16
|
+
end
|
17
|
+
end
|
File without changes
|
data/lib/rail/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.7
|
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-07-
|
11
|
+
date: 2014-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -112,7 +112,8 @@ description: A light framework for front-end development closely following the c
|
|
112
112
|
of Ruby on Rails.
|
113
113
|
email:
|
114
114
|
- ivan.ukhov@gmail.com
|
115
|
-
executables:
|
115
|
+
executables:
|
116
|
+
- rail
|
116
117
|
extensions: []
|
117
118
|
extra_rdoc_files: []
|
118
119
|
files:
|
@@ -124,10 +125,13 @@ files:
|
|
124
125
|
- LICENSE.txt
|
125
126
|
- README.md
|
126
127
|
- Rakefile
|
128
|
+
- bin/rail
|
129
|
+
- lib/generator.rb
|
127
130
|
- lib/rail.rb
|
128
131
|
- lib/rail/application.rb
|
129
132
|
- lib/rail/browser.rb
|
130
133
|
- lib/rail/context.rb
|
134
|
+
- lib/rail/generator.rb
|
131
135
|
- lib/rail/pipeline.rb
|
132
136
|
- lib/rail/processor.rb
|
133
137
|
- lib/rail/processor/base.rb
|
@@ -139,6 +143,15 @@ files:
|
|
139
143
|
- lib/rail/support.rb
|
140
144
|
- lib/rail/tasks/assets.rake
|
141
145
|
- lib/rail/tasks/server.rake
|
146
|
+
- lib/rail/templates/Gemfile
|
147
|
+
- lib/rail/templates/Rakefile.erb
|
148
|
+
- lib/rail/templates/app/assets/javascripts/application.js.coffee
|
149
|
+
- lib/rail/templates/app/assets/stylesheets/application.css.scss
|
150
|
+
- lib/rail/templates/app/helpers/application_helper.rb
|
151
|
+
- lib/rail/templates/app/views/layouts/application.html.haml.erb
|
152
|
+
- lib/rail/templates/config.ru.erb
|
153
|
+
- lib/rail/templates/config/application.rb.erb
|
154
|
+
- lib/rail/templates/public/favicon.png
|
142
155
|
- lib/rail/version.rb
|
143
156
|
- rail.gemspec
|
144
157
|
- spec/coffee_spec.rb
|