cheatly 0.0.6 → 0.1.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 +1 -0
- data/cheatly.gemspec +3 -1
- data/lib/cheatly/adapter/file.rb +5 -7
- data/lib/cheatly/adapter/github.rb +2 -4
- data/lib/cheatly/cli.rb +34 -24
- data/lib/cheatly/renderer.rb +62 -0
- data/lib/cheatly/sheet.rb +7 -5
- data/lib/cheatly/version.rb +1 -1
- data/sheets/assertions.md +41 -0
- data/sheets/bash.md +103 -0
- data/sheets/exceptions.md +34 -0
- data/sheets/gem_release.md +63 -0
- data/sheets/help.md +25 -0
- data/sheets/migrations.md +88 -0
- data/sheets/sprintf.md +24 -0
- data/sheets/status_codes.md +70 -0
- data/test/sheet_test.rb +8 -4
- metadata +58 -30
- data/sheets/assertions.yml +0 -19
- data/sheets/bash.yml +0 -45
- data/sheets/exceptions.yml +0 -10
- data/sheets/gem_release.yml +0 -45
- data/sheets/help.yml +0 -18
- data/sheets/migrations.yml +0 -63
- data/sheets/sprintf.yml +0 -11
- data/sheets/status_codes.yml +0 -20
- data/sheets/strftime.yml +0 -47
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32818231558e1e9a89f45882f281f5c462842e31
|
4
|
+
data.tar.gz: 910657b9200ab0887056f9f16595062435b799c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8421f12bdc98568b06cc20c8781a2c08505de2611b70034f970db0a53dd0505d7420811fe68ae659edbb42fb55250f5f517c2b12bbd9b14d9c34fd3c89c6f409
|
7
|
+
data.tar.gz: 6b31f06c615b0930ae1941dc9765c8938bd3d80998f0ccafd589d3d674c3452e706863e6f7f4c7e7490c988dbaee5f6514b42400f02a720622c86a45d32a1271
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# Cheatly
|
2
2
|
|
3
3
|
[](https://travis-ci.org/arthurnn/cheatly)
|
4
|
+
[](https://codeclimate.com/github/arthurnn/cheatly)
|
4
5
|
|
5
6
|
This is a command line toolset to handle the cheat-sheets reposity located at [sheets](https://github.com/arthurnn/cheatly/tree/master/sheets) folder.
|
6
7
|
|
data/cheatly.gemspec
CHANGED
@@ -18,8 +18,10 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency "octokit", "~> 2.
|
21
|
+
spec.add_dependency "octokit", "~> 2.7.1"
|
22
22
|
spec.add_dependency "pager", "~> 1.0.1"
|
23
|
+
spec.add_dependency "redcarpet", "~> 3.0.0"
|
24
|
+
spec.add_dependency "colorize", "~> 0.6.0"
|
23
25
|
spec.add_dependency "thor", "~> 0.18.1"
|
24
26
|
|
25
27
|
spec.add_development_dependency "bundler", ">= 1.3"
|
data/lib/cheatly/adapter/file.rb
CHANGED
@@ -5,25 +5,23 @@ module Cheatly
|
|
5
5
|
module Adapter
|
6
6
|
class File
|
7
7
|
def find(name)
|
8
|
-
path = "sheets/#{name}.
|
9
|
-
|
10
|
-
yml = YAML.load(sheet_yaml).first
|
11
|
-
[yml.first, yml.last]
|
8
|
+
path = "sheets/#{name}.md"
|
9
|
+
::File.read(path)
|
12
10
|
end
|
13
11
|
|
14
12
|
def all
|
15
|
-
Dir["sheets/*.
|
13
|
+
Dir["sheets/*.md"].map { |f| f.scan(/sheets\/(.*).md/)[0][0] }
|
16
14
|
end
|
17
15
|
|
18
16
|
def create(name, body)
|
19
17
|
body = {name => body}.to_yaml
|
20
|
-
f = ::File.new("sheets/#{name}.
|
18
|
+
f = ::File.new("sheets/#{name}.md", "w")
|
21
19
|
f.write(body)
|
22
20
|
f.close
|
23
21
|
end
|
24
22
|
|
25
23
|
def update(name, body)
|
26
|
-
::File.delete("sheets/#{name}.
|
24
|
+
::File.delete("sheets/#{name}.md")
|
27
25
|
create(name, body)
|
28
26
|
end
|
29
27
|
end
|
@@ -10,10 +10,8 @@ module Cheatly
|
|
10
10
|
REPO = 'arthurnn/cheatly'
|
11
11
|
|
12
12
|
def find(path)
|
13
|
-
response = Octokit.contents(REPO, path: "#{FOLDER}/#{path}.
|
14
|
-
|
15
|
-
yml = YAML.load(sheet_yaml).first
|
16
|
-
[yml.first, yml.last]
|
13
|
+
response = Octokit.contents(REPO, path: "#{FOLDER}/#{path}.md")
|
14
|
+
Base64.decode64(response.content)
|
17
15
|
end
|
18
16
|
|
19
17
|
def all
|
data/lib/cheatly/cli.rb
CHANGED
@@ -1,10 +1,13 @@
|
|
1
|
+
require "pager"
|
2
|
+
require "optparse"
|
3
|
+
require "redcarpet"
|
4
|
+
require "thor"
|
5
|
+
|
1
6
|
require "cheatly/version"
|
2
7
|
require "cheatly/sheet"
|
3
8
|
require "cheatly/adapter/file"
|
4
9
|
require "cheatly/adapter/github"
|
5
|
-
|
6
|
-
require "pager"
|
7
|
-
require "thor"
|
10
|
+
require "cheatly/renderer"
|
8
11
|
|
9
12
|
module Cheatly
|
10
13
|
class CLI < Thor
|
@@ -20,8 +23,9 @@ module Cheatly
|
|
20
23
|
return
|
21
24
|
end
|
22
25
|
page
|
23
|
-
|
24
|
-
|
26
|
+
renderer = Renderer.new
|
27
|
+
md = Redcarpet::Markdown.new(renderer, no_intra_emphasis: true)
|
28
|
+
puts md.render(sheet.to_s)
|
25
29
|
end
|
26
30
|
|
27
31
|
desc "list sheets", "list all available sheets"
|
@@ -53,29 +57,35 @@ module Cheatly
|
|
53
57
|
show('help')
|
54
58
|
end
|
55
59
|
|
60
|
+
desc "version", "Prints cheatly's version"
|
61
|
+
def version
|
62
|
+
puts "Cheatly version #{Cheatly::VERSION}"
|
63
|
+
end
|
64
|
+
map %w(-v --version) => :version
|
65
|
+
|
56
66
|
private
|
57
67
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
68
|
+
def model
|
69
|
+
if options[:local]
|
70
|
+
Sheet.with_file_adapter
|
71
|
+
else
|
72
|
+
Sheet
|
73
|
+
end
|
63
74
|
end
|
64
|
-
end
|
65
75
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
+
def write_to_tempfile(title, body = nil)
|
77
|
+
tempfile = Tempfile.new(title + '.yml')
|
78
|
+
tempfile.write(body) if body
|
79
|
+
tempfile.close
|
80
|
+
system "#{editor} #{tempfile.path}"
|
81
|
+
tempfile.open
|
82
|
+
body = tempfile.read
|
83
|
+
tempfile.close
|
84
|
+
body
|
85
|
+
end
|
76
86
|
|
77
|
-
|
78
|
-
|
79
|
-
|
87
|
+
def editor
|
88
|
+
ENV['VISUAL'] || ENV['EDITOR'] || "nano"
|
89
|
+
end
|
80
90
|
end
|
81
91
|
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require "colorize"
|
2
|
+
|
3
|
+
module Cheatly
|
4
|
+
class Renderer < Redcarpet::Render::Base
|
5
|
+
def normal_text(text)
|
6
|
+
text
|
7
|
+
end
|
8
|
+
|
9
|
+
def block_code(code, language = nil)
|
10
|
+
code = code.each_line
|
11
|
+
code = code.map { |l| " #{l}" }
|
12
|
+
"\n#{code.join}\n"
|
13
|
+
end
|
14
|
+
|
15
|
+
def codespan(code)
|
16
|
+
"`#{code}`"
|
17
|
+
end
|
18
|
+
|
19
|
+
def header(title, level)
|
20
|
+
sep = case level
|
21
|
+
when 1 then '='
|
22
|
+
when 2 then '+'
|
23
|
+
when 3 then '-'
|
24
|
+
end
|
25
|
+
|
26
|
+
"\n#{title.bold}\n#{(sep * title.length).bold}\n"
|
27
|
+
end
|
28
|
+
|
29
|
+
def double_emphasis(text)
|
30
|
+
text.bold
|
31
|
+
end
|
32
|
+
|
33
|
+
def emphasis(text)
|
34
|
+
text.underline
|
35
|
+
end
|
36
|
+
|
37
|
+
def paragraph(text)
|
38
|
+
"#{text}\n"
|
39
|
+
end
|
40
|
+
|
41
|
+
def linebreak
|
42
|
+
"\n"
|
43
|
+
end
|
44
|
+
|
45
|
+
def list(content, list_type)
|
46
|
+
content
|
47
|
+
end
|
48
|
+
|
49
|
+
def list_item(content, list_type)
|
50
|
+
lines = content.each_line
|
51
|
+
lines = lines.map { |l| " #{l}" }
|
52
|
+
" - #{lines.join.strip}\n"
|
53
|
+
end
|
54
|
+
|
55
|
+
def image(color, bg_color, text)
|
56
|
+
text = text.colorize(color: color.to_sym)
|
57
|
+
text = text.colorize(background: bg_color.to_sym) if bg_color
|
58
|
+
|
59
|
+
text
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/lib/cheatly/sheet.rb
CHANGED
@@ -4,11 +4,11 @@ module Cheatly
|
|
4
4
|
|
5
5
|
def initialize(title, body = nil, options = {})
|
6
6
|
@title, @body = title, body
|
7
|
-
@
|
7
|
+
@persisted = options[:persisted] || false
|
8
8
|
end
|
9
9
|
|
10
10
|
def to_s
|
11
|
-
|
11
|
+
body.to_s
|
12
12
|
end
|
13
13
|
|
14
14
|
def create
|
@@ -27,9 +27,11 @@ module Cheatly
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
def self.find(
|
31
|
-
|
32
|
-
Sheet.new(
|
30
|
+
def self.find(name)
|
31
|
+
body = adapter.find(name)
|
32
|
+
Sheet.new(name, body, persisted: true)
|
33
|
+
rescue Octokit::NotFound => e
|
34
|
+
nil
|
33
35
|
rescue RuntimeError => e
|
34
36
|
puts e.message
|
35
37
|
end
|
data/lib/cheatly/version.rb
CHANGED
@@ -0,0 +1,41 @@
|
|
1
|
+
## Standard Ruby Assertions
|
2
|
+
|
3
|
+
assert boolean
|
4
|
+
assert_equal expected, actual
|
5
|
+
assert_raise *args
|
6
|
+
assert_raises *args, &block
|
7
|
+
assert_instance_of klass, object
|
8
|
+
assert_nil object
|
9
|
+
assert_kind_of klass, object
|
10
|
+
assert_respond_to object, method
|
11
|
+
assert_match pattern, string
|
12
|
+
assert_same expected, actual
|
13
|
+
assert_operator object1, operator, object2
|
14
|
+
assert_nothing_raised *args
|
15
|
+
assert_not_same expected, actual
|
16
|
+
assert_not_equal expected, actual
|
17
|
+
assert_not_nil object
|
18
|
+
assert_no_match regexp, string
|
19
|
+
assert_throws expected_symbol, &proc
|
20
|
+
assert_nothing_thrown &proc
|
21
|
+
assert_in_delta expected_float, actual_float, delta
|
22
|
+
assert_send send_array
|
23
|
+
|
24
|
+
|
25
|
+
## Rails Assertions
|
26
|
+
|
27
|
+
assert_response type
|
28
|
+
assert_redirected_to options = {}
|
29
|
+
assert_template expected
|
30
|
+
assert_recognizes expected_options, path, extras={}
|
31
|
+
assert_generates expected_path, options, defaults={}, extras = {}
|
32
|
+
assert_routing path, options, defaults={}, extras={}
|
33
|
+
assert_tag *opts
|
34
|
+
assert_no_tag *opts
|
35
|
+
assert_dom_equal expected, actual
|
36
|
+
assert_dom_not_equal expected, actual
|
37
|
+
assert_valid record
|
38
|
+
|
39
|
+
|
40
|
+
Credit: http://nubyonrails.com/articles/ruby-rails-test-rails-cheat-sheet
|
41
|
+
Use `cheat assert_raise` for more details
|
data/sheets/bash.md
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
# Bash
|
2
|
+
|
3
|
+
- `!!` - Last command
|
4
|
+
- `!foo` - Run most recent command starting with 'foo...' (ex. !ps, !mysqladmin)
|
5
|
+
- `!foo:p` - Print command that `!foo` would run, and add it as the latest to
|
6
|
+
command history
|
7
|
+
- `!$` - Last 'word' of last command (`/path/to/file` in the command
|
8
|
+
`ls -lAFh /path/to/file`, `-uroot` in `mysql -uroot`)
|
9
|
+
- `!$:p` - Print word that `!$` would substitute
|
10
|
+
- `!*` - All but first word of last command (`-lAFh /path/to/file` in the
|
11
|
+
command `ls -lAFh /path/to/file`, `-uroot` in `mysql -uroot`)
|
12
|
+
- `!*:p` - Print words that `!*` would substitute
|
13
|
+
- `^foo^bar` - Replace `foo` in last command with `bar`, print the result, then
|
14
|
+
run. (`mysqladmni -uroot`, run `^ni^in`, results in `mysqladmin -uroot`)
|
15
|
+
- `{a,b,c}` passes words to the command, substituting `a`, `b`, and `c`
|
16
|
+
sequentially (`cp file{,.bk}` runs `cp file file.bk`)
|
17
|
+
|
18
|
+
## Key bindings
|
19
|
+
- `Ctrl + a` - Jump to the start of the line
|
20
|
+
- `Ctrl + b` - Move back a char
|
21
|
+
- `Ctrl + c` - Terminate the command
|
22
|
+
- `Ctrl + d` - Delete from under the cursor
|
23
|
+
- `Ctrl + e` - Jump to the end of the line
|
24
|
+
- `Ctrl + f` - Move forward a char
|
25
|
+
- `Ctrl + k` - Delete to EOL
|
26
|
+
- `Ctrl + l` - Clear the screen
|
27
|
+
- `Ctrl + r` - Search the history backwards
|
28
|
+
- `Ctrl + R` - Search the history backwards with multi occurrence
|
29
|
+
- `Ctrl + t` - Transpose the current char with the previous
|
30
|
+
- `Ctrl + u` - Delete backward from cursor
|
31
|
+
- `Ctrl + w` - Delete backward a word
|
32
|
+
- `Ctrl + xx` - Move between EOL and current cursor position
|
33
|
+
- `Ctrl + x @` - Show possible hostname completions
|
34
|
+
- `Ctrl + z` - Suspend/ Stop the command
|
35
|
+
- `Ctrl + x`; `Ctrl + e` - Edit line into your favorite editor
|
36
|
+
- `Alt + <` - Move to the first line in the history
|
37
|
+
- `Alt + >` - Move to the last line in the history
|
38
|
+
- `Alt + ?` - Show current completion list
|
39
|
+
- `Alt + *` - Insert all possible completions
|
40
|
+
- `Alt + /` - Attempt to complete filename
|
41
|
+
- `Alt + .` - Yank last argument to previous command
|
42
|
+
- `Alt + b` - Move backward
|
43
|
+
- `Alt + c` - Capitalize the word
|
44
|
+
- `Alt + d` - Delete word
|
45
|
+
- `Alt + f` - Move forward
|
46
|
+
- `Alt + l` - Make word lowercase
|
47
|
+
- `Alt + n` - Search the history forwards non-incremental
|
48
|
+
- `Alt + p` - Search the history backwards non-incremental
|
49
|
+
- `Alt + r` - Recall command
|
50
|
+
- `Alt + t` - Transpose the current word with the previous
|
51
|
+
- `Alt + u` - Make word uppercase
|
52
|
+
- `Alt + back-space` - Delete backward from cursor
|
53
|
+
|
54
|
+
## Completion
|
55
|
+
(Here "2T" means Press TAB twice)
|
56
|
+
$ 2T - All available commands(common)
|
57
|
+
$ (string)2T - All available commands starting with (string)
|
58
|
+
$ /2T - Entire directory structure including hidden one
|
59
|
+
$ (dir)2T - Only Sub Dirs inside (dir) including Hidden one
|
60
|
+
$ *2T - Only Sub Dirs inside without Hidden one
|
61
|
+
$ ~2T - All Present Users on system from \"/etc/passwd\"
|
62
|
+
$ $2T - All Sys variables
|
63
|
+
$ @2T - Entries from "/etc/hosts"
|
64
|
+
$ =2T - Output like ls or dir
|
65
|
+
.bash_profile = sourced by login shell,
|
66
|
+
.bashrc = sourced by all shells,
|
67
|
+
.bash_aliases = should be sourced by .bashrc
|
68
|
+
|
69
|
+
Run something:
|
70
|
+
|
71
|
+
for i in a b c; do $i 'hello'; done
|
72
|
+
|
73
|
+
Do something on a bunch of files:
|
74
|
+
|
75
|
+
for i in *.rb; do echo "$i"; done
|
76
|
+
|
77
|
+
If syntax:
|
78
|
+
|
79
|
+
if [[ -e .ssh ]]; then echo "hi"; fi
|
80
|
+
|
81
|
+
Numerical comparison:
|
82
|
+
|
83
|
+
i=0
|
84
|
+
if (( i <= 1 )); then
|
85
|
+
echo "smaller or equal"
|
86
|
+
else
|
87
|
+
echo "bigger"
|
88
|
+
fi
|
89
|
+
|
90
|
+
file check flags:
|
91
|
+
|
92
|
+
-e: file exists
|
93
|
+
-f: regular file (non directory)
|
94
|
+
-d: directory
|
95
|
+
-s: non-zero file
|
96
|
+
-x: execute permission
|
97
|
+
|
98
|
+
Avoid duplicates in your history:
|
99
|
+
|
100
|
+
export HISTIGNORE="&:ls:ls*:[bf]g:exit"
|
101
|
+
|
102
|
+
more here:
|
103
|
+
<http://www.linuxtopia.org/online_books/advanced_bash_scripting_guide/fto.html>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# Ruby exceptions
|
2
|
+
|
3
|
+
* Exception
|
4
|
+
- NoMemoryError
|
5
|
+
- ScriptError
|
6
|
+
+ LoadError
|
7
|
+
+ NotImplementedError
|
8
|
+
* SyntaxError
|
9
|
+
- SignalException
|
10
|
+
+ Interrupt
|
11
|
+
* Timeout::Error # require 'timeout' for Timeout::Error
|
12
|
+
- StandardError # caught by rescue if no type is specified
|
13
|
+
+ ArgumentError
|
14
|
+
+ IOError
|
15
|
+
* EOFError
|
16
|
+
+ IndexError
|
17
|
+
* LocalJumpError
|
18
|
+
+ NameError
|
19
|
+
* NoMethodError
|
20
|
+
+ RangeError
|
21
|
+
* FloatDomainError
|
22
|
+
* RegexpError
|
23
|
+
+ RuntimeError
|
24
|
+
* Timeout::Error # moved here in ruby 1.9.2
|
25
|
+
+ SecurityError
|
26
|
+
+ SocketError
|
27
|
+
+ SystemCallError # Errno::* inherits here
|
28
|
+
+ SystemStackError
|
29
|
+
+ ThreadError
|
30
|
+
+ TypeError
|
31
|
+
+ ZeroDivisionError
|
32
|
+
|
33
|
+
+ SystemExit
|
34
|
+
* fatal
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# RubyGems release
|
2
|
+
|
3
|
+
$ gem release your.gemspec # builds the gem and pushes it to
|
4
|
+
# rubygems.org
|
5
|
+
$ gem release # uses the first *.gemspec in the
|
6
|
+
# current working directory
|
7
|
+
$ gem release --tag # also executes gem tag
|
8
|
+
$ gem release --key KEY # use the specified API key from
|
9
|
+
# ~/.gem/credentials
|
10
|
+
$ gem release --host HOST # push to a gemcutter-compatible host
|
11
|
+
# other than rubygems.org
|
12
|
+
$ gem release --quiet # suppress output status messages
|
13
|
+
$ gem tag # creates a git tag and pushes to
|
14
|
+
# the origin git repository
|
15
|
+
$ gem gemspec # generates a [gem_name].gemspec using
|
16
|
+
# Dir[\"{lib/**/*,[A-Z]*}\"]
|
17
|
+
$ gem gemspec --strategy git # uses s.files = `git ls-files app
|
18
|
+
# lib`.split("\\")
|
19
|
+
$ gem bootstrap # generates a [gem_name].gemspec using
|
20
|
+
# the current directory name
|
21
|
+
# and scaffolds
|
22
|
+
# lib/[gem_name]/version.rb, README,
|
23
|
+
# test/
|
24
|
+
$ gem bootstrap your_gem # creates a your_gem directory,
|
25
|
+
# bootstraps your_gem and inits a git
|
26
|
+
# repo
|
27
|
+
$ gem bootstrap --github # inits a git repo, creates it on
|
28
|
+
# GitHub and pushes it to github
|
29
|
+
# (requires git config for
|
30
|
+
# github.user and github.token
|
31
|
+
# to be set)
|
32
|
+
$ gem bump # Bump the gem version to the next patch or
|
33
|
+
# pre-release level (e.g. 0.0.1 to 0.0.2,
|
34
|
+
# 1.0.0.pre1 to 1.0.0.pre2, 1.0.0.rc1 to
|
35
|
+
# 1.0.0.rc2)
|
36
|
+
$ gem bump --version 1.1.1 # Bump the gem version to the given version
|
37
|
+
# number
|
38
|
+
$ gem bump --version major # Bump the gem version to the next major
|
39
|
+
# level (e.g. 0.0.1 to 1.0.0)
|
40
|
+
$ gem bump --version minor # Bump the gem version to the next minor
|
41
|
+
# level (e.g. 0.0.1 to 0.1.0)
|
42
|
+
$ gem bump --version patch # Bump the gem version to the next patch
|
43
|
+
# level (e.g. 0.0.1 to 0.0.2)
|
44
|
+
$ gem bump --version pre|rc|etc # Bump the gem version to the next
|
45
|
+
# pre-release level (e.g. `pre`: 1.0.0.pre1
|
46
|
+
# to 1.0.0.pre2, 0.0.1 to 0.0.2.pre1;
|
47
|
+
# `beta`: 1.0.0.beta1 to 1.0.0.beta2, 0.0.1
|
48
|
+
# to 0.0.2.beta1)
|
49
|
+
$ gem bump --push # Bump and push to the origin git repository
|
50
|
+
$ gem bump --tag # Bump and tag gem and pushes tags to the
|
51
|
+
# origin repository
|
52
|
+
$ gem bump --release # Bump and release gem
|
53
|
+
$ gem bump --release --key KEY # Bump and release the gem, using the
|
54
|
+
# specified API key from ~/.gem/credentials
|
55
|
+
$ gem bump --release --host HOST # Bump and release the gem to a
|
56
|
+
# gemcutter-compatible host other than
|
57
|
+
# rubygems.org
|
58
|
+
$ gem bump --release --quiet # Bump and release the gem, suppressing
|
59
|
+
# output status messages
|
60
|
+
$ gem bump --tag --release # Bump, tag, push and release gem
|
61
|
+
$ gem bump --no-commit # Bump the gem version but don't git commit
|
62
|
+
# (will be ignored if combined with push,
|
63
|
+
# tag or release)
|
data/sheets/help.md
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
Cheatly Help
|
2
|
+
============
|
3
|
+
|
4
|
+
Usage
|
5
|
+
-----
|
6
|
+
|
7
|
+
To list the available
|
8
|
+
|
9
|
+
cheatly list
|
10
|
+
|
11
|
+
To see the sheet
|
12
|
+
|
13
|
+
cheatly show $SHEET_NAME
|
14
|
+
|
15
|
+
To create a new sheet local:
|
16
|
+
|
17
|
+
1. `git clone https://github.com/arthurnn/cheatly.git`
|
18
|
+
2. `cheatly new $SHEET_NAME`
|
19
|
+
3. Create a pull request
|
20
|
+
|
21
|
+
To see this message
|
22
|
+
|
23
|
+
cheatly help
|
24
|
+
|
25
|
+
happy cheating
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# Rails Migrations
|
2
|
+
|
3
|
+
## Methods:
|
4
|
+
|
5
|
+
create_table(name, options)
|
6
|
+
drop_table(name)
|
7
|
+
rename_table(old_name, new_name)
|
8
|
+
add_column(table_name, column_name, type, options)
|
9
|
+
rename_column(table_name, column_name, new_column_name)
|
10
|
+
change_column(table_name, column_name, type, options)
|
11
|
+
remove_column(table_name, column_name)
|
12
|
+
add_index(table_name, column_name, index_type)
|
13
|
+
remove_index(table_name, column_name)
|
14
|
+
change_table(table_name) { |table| ... }
|
15
|
+
|
16
|
+
## Available Column Types (mappings are below):
|
17
|
+
|
18
|
+
* integer
|
19
|
+
* float
|
20
|
+
* datetime
|
21
|
+
* date
|
22
|
+
* timestamp
|
23
|
+
* time
|
24
|
+
* text
|
25
|
+
* string
|
26
|
+
* binary
|
27
|
+
* boolean
|
28
|
+
* decimal
|
29
|
+
- precision
|
30
|
+
- scale
|
31
|
+
|
32
|
+
## Valid Column Options:
|
33
|
+
|
34
|
+
* limit
|
35
|
+
* null (i.e. `null: false` implies NOT NULL)
|
36
|
+
* default (to specify default values)
|
37
|
+
* precision (only decimal)
|
38
|
+
* scale (only decimal)
|
39
|
+
|
40
|
+
## Rake Tasks:
|
41
|
+
|
42
|
+
- rake db:schema:dump: run after you create a model to capture the schema.rb
|
43
|
+
- rake db:schema:import: import the schema file into the current database
|
44
|
+
(on error, check if your schema.rb has `force: true` on the create table
|
45
|
+
statements)
|
46
|
+
- rails generate migration (migration name): generate a new migration with
|
47
|
+
a new 'highest' version (run 'rails generate migration' for this info at
|
48
|
+
your fingertips)
|
49
|
+
- rake db:migrate: migrate your current database to the most recent version
|
50
|
+
- rake db:migrate VERSION=5: migrate your current database to a specific
|
51
|
+
version (in this case, version 5)
|
52
|
+
- rake db:rollback: migrate down one migration
|
53
|
+
- rake db:rollback STEP=3: migrate down three migrations
|
54
|
+
- rake db:migrate RAILS_ENV=production: migrate your production database
|
55
|
+
|
56
|
+
## SQL:
|
57
|
+
|
58
|
+
Queries can be executed directly:
|
59
|
+
|
60
|
+
execute <<SQL
|
61
|
+
ALTER TABLE researchers
|
62
|
+
ADD CONSTRAINT fk_researchers_departments
|
63
|
+
FOREIGN KEY ( department_id ) REFERENCES departments( id )
|
64
|
+
SQL
|
65
|
+
|
66
|
+
## Example:
|
67
|
+
|
68
|
+
class UpdateUsersAndCreateProducts < ActiveRecord::Migration
|
69
|
+
def self.up
|
70
|
+
rename_column :users, :password:, :hashed_password
|
71
|
+
remove_column :users, :email
|
72
|
+
|
73
|
+
create_table :people do |t|
|
74
|
+
t.integer :account_id
|
75
|
+
t.string :first_name, :last_name, null: false
|
76
|
+
t.text :description
|
77
|
+
t.references :category # is the equivalent of t.integer :category_id
|
78
|
+
t.timestamps
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.down
|
83
|
+
rename_column :users, :hashed_password, :password
|
84
|
+
add_column :users, :email, :string
|
85
|
+
|
86
|
+
drop_table :products
|
87
|
+
end
|
88
|
+
end
|
data/sheets/sprintf.md
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# `sprintf` formatters
|
2
|
+
|
3
|
+
%b => Binary integer
|
4
|
+
%c => Single character
|
5
|
+
%d => Decimal integer
|
6
|
+
%e => Decimal integer displayed in exponential form (3e+07)
|
7
|
+
%E => Decimal integer displayed in exponential form (3E+07)
|
8
|
+
%f => Floating point number
|
9
|
+
%g => Same as %e if exponent is less than -4, %f otherwise
|
10
|
+
%G => Same as %E if exponent is less than -4, %f otherwise
|
11
|
+
%o => Octal integer
|
12
|
+
%s => String
|
13
|
+
%u => Unsigned decimal integer
|
14
|
+
%x => Hexadecimal integer (2a)
|
15
|
+
%X => Hexadecimal integer uppercase (2A)
|
16
|
+
%02d => 0 padded two digits
|
17
|
+
%.02f => round to the hundredths
|
18
|
+
%+ => +/- sign
|
19
|
+
|
20
|
+
|
21
|
+
## Width & alignment
|
22
|
+
|
23
|
+
"%10s" % "hello" => " hello"
|
24
|
+
"%-10s" % "hello" => "hello "
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# HTTP Response Codes
|
2
|
+
|
3
|
+
Use these codes for the #head or #render methods. Ex:
|
4
|
+
|
5
|
+
head :ok
|
6
|
+
render :file => '404.html.erb', :status => :not_found
|
7
|
+
|
8
|
+
## 1xx Informational
|
9
|
+
|
10
|
+
100 => :continue
|
11
|
+
101 => :switching_protocols
|
12
|
+
102 => :processing
|
13
|
+
|
14
|
+
## 2xx Success
|
15
|
+
|
16
|
+
200 => :ok
|
17
|
+
201 => :created
|
18
|
+
202 => :accepted
|
19
|
+
203 => :non_authoritative_information
|
20
|
+
204 => :no_content
|
21
|
+
205 => :reset_content
|
22
|
+
206 => :partial_content
|
23
|
+
207 => :multi_status
|
24
|
+
226 => :im_used
|
25
|
+
|
26
|
+
## 3xx Redirection
|
27
|
+
|
28
|
+
300 => :multiple_choices
|
29
|
+
301 => :moved_permanently
|
30
|
+
302 => :found
|
31
|
+
303 => :see_other
|
32
|
+
304 => :not_modified
|
33
|
+
305 => :use_proxy
|
34
|
+
307 => :temporary_redirect
|
35
|
+
|
36
|
+
## 4xx Client Error
|
37
|
+
|
38
|
+
400 => :bad_request
|
39
|
+
401 => :unauthorized
|
40
|
+
402 => :payment_required
|
41
|
+
403 => :forbidden
|
42
|
+
404 => :not_found
|
43
|
+
405 => :method_not_allowed
|
44
|
+
406 => :not_acceptable
|
45
|
+
407 => :proxy_authentication_required
|
46
|
+
408 => :request_timeout
|
47
|
+
409 => :conflict
|
48
|
+
410 => :gone
|
49
|
+
411 => :length_required
|
50
|
+
412 => :precondition_failed
|
51
|
+
413 => :request_entity_too_large
|
52
|
+
414 => :request_uri_too_long
|
53
|
+
415 => :unsupported_media_type
|
54
|
+
416 => :requested_range_not_satisfiable
|
55
|
+
417 => :expectation_failed
|
56
|
+
422 => :unprocessable_entity
|
57
|
+
423 => :locked
|
58
|
+
424 => :failed_dependency
|
59
|
+
426 => :upgrade_required
|
60
|
+
|
61
|
+
## 5xx Server Error
|
62
|
+
|
63
|
+
500 => :internal_server_error
|
64
|
+
501 => :not_implemented
|
65
|
+
502 => :bad_gateway
|
66
|
+
503 => :service_unavailable
|
67
|
+
504 => :gateway_timeout
|
68
|
+
505 => :http_version_not_supported
|
69
|
+
507 => :insufficient_storage
|
70
|
+
510 => :not_extended"
|
data/test/sheet_test.rb
CHANGED
@@ -1,14 +1,18 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class SheetTest < MiniTest::Test
|
4
|
+
def test_sheet_list
|
5
|
+
sheets = Cheatly::Sheet.all
|
6
|
+
assert sheets.is_a?(Array)
|
7
|
+
assert sheets.any?
|
8
|
+
end
|
9
|
+
|
4
10
|
def test_sheet_find
|
5
11
|
sheet = Cheatly::Sheet.find("bash")
|
6
12
|
assert sheet
|
7
13
|
end
|
8
14
|
|
9
|
-
def
|
10
|
-
|
11
|
-
assert sheets.is_a?(Array)
|
12
|
-
assert sheets.any?
|
15
|
+
def test_sheet_not_found
|
16
|
+
assert_nil Cheatly::Sheet.find("foo")
|
13
17
|
end
|
14
18
|
end
|
metadata
CHANGED
@@ -1,97 +1,125 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cheatly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arthur Neves
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: octokit
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
19
|
+
version: 2.7.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
26
|
+
version: 2.7.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: pager
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 1.0.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 1.0.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: redcarpet
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 3.0.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.0.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: colorize
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.6.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.6.0
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: thor
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
44
72
|
requirements:
|
45
|
-
- - ~>
|
73
|
+
- - "~>"
|
46
74
|
- !ruby/object:Gem::Version
|
47
75
|
version: 0.18.1
|
48
76
|
type: :runtime
|
49
77
|
prerelease: false
|
50
78
|
version_requirements: !ruby/object:Gem::Requirement
|
51
79
|
requirements:
|
52
|
-
- - ~>
|
80
|
+
- - "~>"
|
53
81
|
- !ruby/object:Gem::Version
|
54
82
|
version: 0.18.1
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: bundler
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
58
86
|
requirements:
|
59
|
-
- -
|
87
|
+
- - ">="
|
60
88
|
- !ruby/object:Gem::Version
|
61
89
|
version: '1.3'
|
62
90
|
type: :development
|
63
91
|
prerelease: false
|
64
92
|
version_requirements: !ruby/object:Gem::Requirement
|
65
93
|
requirements:
|
66
|
-
- -
|
94
|
+
- - ">="
|
67
95
|
- !ruby/object:Gem::Version
|
68
96
|
version: '1.3'
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
98
|
name: rake
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
72
100
|
requirements:
|
73
|
-
- -
|
101
|
+
- - ">="
|
74
102
|
- !ruby/object:Gem::Version
|
75
103
|
version: '0'
|
76
104
|
type: :development
|
77
105
|
prerelease: false
|
78
106
|
version_requirements: !ruby/object:Gem::Requirement
|
79
107
|
requirements:
|
80
|
-
- -
|
108
|
+
- - ">="
|
81
109
|
- !ruby/object:Gem::Version
|
82
110
|
version: '0'
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
112
|
name: minitest
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
86
114
|
requirements:
|
87
|
-
- - ~>
|
115
|
+
- - "~>"
|
88
116
|
- !ruby/object:Gem::Version
|
89
117
|
version: 5.0.8
|
90
118
|
type: :development
|
91
119
|
prerelease: false
|
92
120
|
version_requirements: !ruby/object:Gem::Requirement
|
93
121
|
requirements:
|
94
|
-
- - ~>
|
122
|
+
- - "~>"
|
95
123
|
- !ruby/object:Gem::Version
|
96
124
|
version: 5.0.8
|
97
125
|
description: A cheat-sheet cli for a cheat repository
|
@@ -102,8 +130,8 @@ executables:
|
|
102
130
|
extensions: []
|
103
131
|
extra_rdoc_files: []
|
104
132
|
files:
|
105
|
-
- .gitignore
|
106
|
-
- .travis.yml
|
133
|
+
- ".gitignore"
|
134
|
+
- ".travis.yml"
|
107
135
|
- Gemfile
|
108
136
|
- LICENSE.txt
|
109
137
|
- README.md
|
@@ -115,18 +143,18 @@ files:
|
|
115
143
|
- lib/cheatly/adapter/file.rb
|
116
144
|
- lib/cheatly/adapter/github.rb
|
117
145
|
- lib/cheatly/cli.rb
|
146
|
+
- lib/cheatly/renderer.rb
|
118
147
|
- lib/cheatly/sheet.rb
|
119
148
|
- lib/cheatly/version.rb
|
120
|
-
- sheets/assertions.
|
121
|
-
- sheets/bash.
|
122
|
-
- sheets/exceptions.
|
123
|
-
- sheets/gem_release.
|
124
|
-
- sheets/help.
|
149
|
+
- sheets/assertions.md
|
150
|
+
- sheets/bash.md
|
151
|
+
- sheets/exceptions.md
|
152
|
+
- sheets/gem_release.md
|
153
|
+
- sheets/help.md
|
125
154
|
- sheets/markdown.yml
|
126
|
-
- sheets/migrations.
|
127
|
-
- sheets/sprintf.
|
128
|
-
- sheets/status_codes.
|
129
|
-
- sheets/strftime.yml
|
155
|
+
- sheets/migrations.md
|
156
|
+
- sheets/sprintf.md
|
157
|
+
- sheets/status_codes.md
|
130
158
|
- test/sheet_test.rb
|
131
159
|
- test/test_helper.rb
|
132
160
|
homepage: ''
|
@@ -139,17 +167,17 @@ require_paths:
|
|
139
167
|
- lib
|
140
168
|
required_ruby_version: !ruby/object:Gem::Requirement
|
141
169
|
requirements:
|
142
|
-
- -
|
170
|
+
- - ">="
|
143
171
|
- !ruby/object:Gem::Version
|
144
172
|
version: '0'
|
145
173
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
146
174
|
requirements:
|
147
|
-
- -
|
175
|
+
- - ">="
|
148
176
|
- !ruby/object:Gem::Version
|
149
177
|
version: '0'
|
150
178
|
requirements: []
|
151
179
|
rubyforge_project:
|
152
|
-
rubygems_version: 2.
|
180
|
+
rubygems_version: 2.2.0
|
153
181
|
signing_key:
|
154
182
|
specification_version: 4
|
155
183
|
summary: A cheat-sheet cli for a cheat repository
|
data/sheets/assertions.yml
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
---
|
2
|
-
assertions: ! " # Credit: http://nubyonrails.com/articles/ruby-rails-test-rails-cheat-sheet\n
|
3
|
-
\ # Use 'cheat assert_raise' for more details\n \n # Standard Ruby Assertions\n
|
4
|
-
\ \n assert boolean \n assert_equal expected, actual
|
5
|
-
\n assert_raise *args \n assert_raises *args, &block \n assert_instance_of
|
6
|
-
\ klass, object \n assert_nil object \n assert_kind_of klass,
|
7
|
-
object \n assert_respond_to object, method \n assert_match pattern,
|
8
|
-
string \n assert_same expected, actual \n assert_operator object1,
|
9
|
-
operator, object2 \n assert_nothing_raised *args \n assert_not_same expected,
|
10
|
-
actual \n assert_not_equal expected, actual \n assert_not_nil object
|
11
|
-
\n assert_no_match regexp, string \n assert_throws expected_symbol,
|
12
|
-
&proc \n assert_nothing_thrown &proc \n assert_in_delta expected_float,
|
13
|
-
actual_float, delta \n assert_send send_array\n \n # Rails Assertions\n
|
14
|
-
\ \n assert_response type \n assert_redirected_to options = {} \n assert_template
|
15
|
-
\ expected \n assert_recognizes expected_options, path, extras={}
|
16
|
-
\n assert_generates expected_path, options, defaults={}, extras = {} \n
|
17
|
-
\ assert_routing path, options, defaults={}, extras={} \n assert_tag *opts
|
18
|
-
\n assert_no_tag *opts \n assert_dom_equal expected, actual \n
|
19
|
-
\ assert_dom_not_equal expected, actual \n assert_valid record "
|
data/sheets/bash.yml
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
---
|
2
|
-
bash: ! " !! - Last command\n !foo - Run most recent command starting with 'foo...'
|
3
|
-
(ex. !ps, !mysqladmin)\n !foo:p - Print command that !foo would run, and add
|
4
|
-
it as the latest to\n command history\n !$ - Last 'word' of last command ('/path/to/file'
|
5
|
-
in the command 'ls -lAFh\n /path/to/file', '-uroot' in 'mysql -uroot')\n !$:p
|
6
|
-
- Print word that !$ would substitute\n !* - All but first word of last command
|
7
|
-
('-lAFh /path/to/file' in the\n command 'ls -lAFh /path/to/file', '-uroot' in
|
8
|
-
'mysql -uroot')\n !*:p - Print words that !* would substitute\n \n ^foo^bar
|
9
|
-
- Replace 'foo' in last command with 'bar', print the result, then\n run. ('mysqladmni
|
10
|
-
-uroot', run '^ni^in', results in 'mysqladmin -uroot')\n \n {a,b,c} passes words
|
11
|
-
to the command, substituting a, b, and c sequentially\n (`cp file{,.bk}` runs
|
12
|
-
`cp file file.bk`)\n \n Ctrl + a - Jump to the start of the line\n Ctrl +
|
13
|
-
b - Move back a char\n Ctrl + c - Terminate the command\n Ctrl + d - Delete
|
14
|
-
from under the cursor\n Ctrl + e - Jump to the end of the line\n Ctrl + f
|
15
|
-
- Move forward a char\n Ctrl + k - Delete to EOL\n Ctrl + l - Clear the screen\n
|
16
|
-
\ Ctrl + r - Search the history backwards\n Ctrl + R - Search the history backwards
|
17
|
-
with multi occurrence\n Ctrl + t - Transpose the current char with the previous\n
|
18
|
-
\ Ctrl + u - Delete backward from cursor\n Ctrl + w - Delete backward a word\n
|
19
|
-
\ Ctrl + xx - Move between EOL and current cursor position\n Ctrl + x @ - Show
|
20
|
-
possible hostname completions\n Ctrl + z - Suspend/ Stop the command\n Ctrl
|
21
|
-
+ x; Ctrl + e - Edit line into your favorite editor\n \n Alt + < - Move to the
|
22
|
-
first line in the history\n Alt + > - Move to the last line in the history\n
|
23
|
-
\ Alt + ? - Show current completion list\n Alt + * - Insert all possible completions\n
|
24
|
-
\ Alt + / - Attempt to complete filename\n Alt + . - Yank last argument to
|
25
|
-
previous command\n Alt + b - Move backward\n Alt + c - Capitalize the word\n
|
26
|
-
\ Alt + d - Delete word\n Alt + f - Move forward\n Alt + l - Make word lowercase\n
|
27
|
-
\ Alt + n - Search the history forwards non-incremental\n Alt + p - Search
|
28
|
-
the history backwards non-incremental\n Alt + r - Recall command\n Alt + t
|
29
|
-
- Transpose the current word with the previous\n Alt + u - Make word uppercase\n
|
30
|
-
\ Alt + back-space - Delete backward from cursor\n \n (Here \"2T\" means Press
|
31
|
-
TAB twice)\n $ 2T - All available commands(common)\n $ (string)2T - All available
|
32
|
-
commands starting with (string)\n $ /2T - Entire directory structure including
|
33
|
-
Hidden one\n $ (dir)2T - Only Sub Dirs inside (dir) including Hidden one\n $
|
34
|
-
*2T - Only Sub Dirs inside without Hidden one \n $ ~2T - All Present Users on
|
35
|
-
system from \"/etc/passwd\"\n $ $2T - All Sys variables\n $ @2T - Entries
|
36
|
-
from \"/etc/hosts\"\n $ =2T - Output like ls or dir\n .bash_profile = sourced
|
37
|
-
by login shell, \n .bashrc = sourced by all shells, \n .bash_aliases = should
|
38
|
-
be sourced by .bashrc\n \n Run something:\n for i in a b c; do $i 'hello';
|
39
|
-
done\n \n Do something on a bunch of files:\n for i in *.rb; do echo \"$i\";
|
40
|
-
done\n \n If syntax:\n if [[ -e .ssh ]]; then echo \"hi\"; fi\n \n Numerical
|
41
|
-
comparison:\n i=0; if (( i <= 1 )); then echo \"smaller or equal\"; else echo
|
42
|
-
\"bigger\"; fi\n \n file check flags:\n -e: file exists\n -f: regular
|
43
|
-
file (non directory)\n -d: directory\n -s: non-zero file\n -x: execute
|
44
|
-
permission\n \n Avoid duplicates in your history:\n export HISTIGNORE=\"&:ls:ls
|
45
|
-
*:[bf]g:exit\"\n \n more here:\n \n http://www.linuxtopia.org/online_books/advanced_bash_scripting_guide/fto.html"
|
data/sheets/exceptions.yml
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
---
|
2
|
-
exceptions: ! " Exception\r\n NoMemoryError\r\n ScriptError\r\n LoadError\r\n NotImplementedError\r\n
|
3
|
-
\ SyntaxError\r\n SignalException\r\n Interrupt\r\n Timeout::Error #
|
4
|
-
require 'timeout' for Timeout::Error\r\n StandardError # caught by rescue
|
5
|
-
if no type is specified\r\n ArgumentError\r\n IOError\r\n EOFError\r\n IndexError\r\n
|
6
|
-
\ LocalJumpError\r\n NameError\r\n NoMethodError\r\n RangeError\r\n FloatDomainError\r\n
|
7
|
-
\ RegexpError\r\n RuntimeError\r\n Timeout::Error # moved here in ruby
|
8
|
-
1.9.2\r\n SecurityError\r\n SocketError\r\n SystemCallError # Errno::*
|
9
|
-
inherits here\r\n SystemStackError\r\n ThreadError\r\n TypeError\r\n ZeroDivisionError\r\n
|
10
|
-
\ SystemExit\r\n fatal"
|
data/sheets/gem_release.yml
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
---
|
2
|
-
gem_release: ! "$ gem release your.gemspec # builds the gem and pushes it to
|
3
|
-
rubygems.org\n$ gem release # uses the first *.gemspec in the
|
4
|
-
current\n # working directory\n$ gem release --tag
|
5
|
-
\ # also executes gem tag\n$ gem release --key KEY # use the
|
6
|
-
specified API key from\n # ~/.gem/credentials\n$
|
7
|
-
gem release --host HOST # push to a gemcutter-compatible host other\n #
|
8
|
-
than rubygems.org\n$ gem release --quiet # suppress output status messages\n\n$
|
9
|
-
gem tag # creates a git tag and pushes to the origin\n #
|
10
|
-
git repository\n\n$ gem gemspec # generates a [gem_name].gemspec
|
11
|
-
using\n # Dir[\"{lib/**/*,[A-Z]*}\"]\n$ gem gemspec
|
12
|
-
--strategy git # uses s.files = `git ls-files app\n #
|
13
|
-
lib`.split(\"\\n\")\n\n$ gem bootstrap # generates a [gem_name].gemspec
|
14
|
-
using the\n # current directory name and scaffolds\n
|
15
|
-
\ # lib/[gem_name]/version.rb, README, test/\n$ gem
|
16
|
-
bootstrap your_gem # creates a your_gem directory, bootstraps\n #
|
17
|
-
your_gem and inits a git repo\n$ gem bootstrap --github # inits a git repo,
|
18
|
-
creates it on github and\n # pushes it to github
|
19
|
-
(requires git config\n # for github.user and github.token
|
20
|
-
to be set)\n\n$ gem bump # Bump the gem version to the next
|
21
|
-
patch or\n # pre-release level (e.g. 0.0.1 to 0.0.2,\n
|
22
|
-
\ # 1.0.0.pre1 to 1.0.0.pre2, 1.0.0.rc1 to\n #
|
23
|
-
1.0.0.rc2)\n$ gem bump --version 1.1.1 # Bump the gem version to the given
|
24
|
-
version\n # number\n$ gem bump --version major #
|
25
|
-
Bump the gem version to the next major\n # level
|
26
|
-
(e.g. 0.0.1 to 1.0.0)\n$ gem bump --version minor # Bump the gem version to
|
27
|
-
the next minor\n # level (e.g. 0.0.1 to 0.1.0)\n$
|
28
|
-
gem bump --version patch # Bump the gem version to the next patch\n #
|
29
|
-
level (e.g. 0.0.1 to 0.0.2)\n$ gem bump --version pre|rc|etc # Bump the gem version
|
30
|
-
to the next\n # pre-release level (e.g. `pre`: 1.0.0.pre1\n
|
31
|
-
\ # to 1.0.0.pre2, 0.0.1 to 0.0.2.pre1;\n #
|
32
|
-
`beta`: 1.0.0.beta1 to 1.0.0.beta2, 0.0.1\n # to
|
33
|
-
0.0.2.beta1)\n$ gem bump --push # Bump and push to the origin git
|
34
|
-
repository\n$ gem bump --tag # Bump and tag gem and pushes tags
|
35
|
-
to the\n # origin repository\n$ gem bump --release
|
36
|
-
\ # Bump and release gem\n$ gem bump --release --key KEY # Bump and
|
37
|
-
release the gem, using the\n # specified API key
|
38
|
-
from ~/.gem/credentials\n$ gem bump --release --host HOST # Bump and release the
|
39
|
-
gem to a\n # gemcutter-compatible host other than\n
|
40
|
-
\ # rubygems.org\n$ gem bump --release --quiet #
|
41
|
-
Bump and release the gem, suppressing\n # output
|
42
|
-
status messages\n$ gem bump --tag --release # Bump, tag, push and release
|
43
|
-
gem\n$ gem bump --no-commit # Bump the gem version but don't git commit\n
|
44
|
-
\ # (will be ignored if combined with push,\n #
|
45
|
-
tag or release)"
|
data/sheets/help.yml
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
---
|
2
|
-
help: |
|
3
|
-
cheatly help
|
4
|
-
------------
|
5
|
-
usage: $ cheatly list
|
6
|
-
To list the available sheets
|
7
|
-
|
8
|
-
$ cheatly show (sheetname)
|
9
|
-
To see the sheet
|
10
|
-
|
11
|
-
To create a new sheet local:
|
12
|
-
1. Clone the project: https://github.com/arthurnn/cheatly
|
13
|
-
2. $ cheatly create (sheetname)
|
14
|
-
3. Create a PR
|
15
|
-
|
16
|
-
$ cheatly help
|
17
|
-
To see this
|
18
|
-
happy cheating !
|
data/sheets/migrations.yml
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
---
|
2
|
-
migrations: ! " Methods:\n create_table(name, options)\n drop_table(name)\n
|
3
|
-
\ rename_table(old_name, new_name)\n add_column(table_name, column_name, type,
|
4
|
-
options)\n rename_column(table_name, column_name, new_column_name)\n change_column(table_name,
|
5
|
-
column_name, type, options)\n remove_column(table_name, column_name)\n add_index(table_name,
|
6
|
-
column_name, index_type)\n remove_index(table_name, column_name)\n change_table(table_name)
|
7
|
-
{|Table.new(table_name, self)| ...} \n \n Available Column Types (mappings are
|
8
|
-
below):\n * integer\n * float\n * datetime\n * date\n * timestamp\n
|
9
|
-
\ * time\n * text\n * string\n * binary\n * boolean\n * decimal
|
10
|
-
:precision, :scale\n \n Valid Column Options:\n * limit\n * null (i.e. \":null
|
11
|
-
=> false\" implies NOT NULL)\n * default (to specify default values)\n * :decimal,
|
12
|
-
:precision => 8, :scale => 3\n \n Rake Tasks:\n rake db:schema:dump: run after
|
13
|
-
you create a model to capture the schema.rb\n rake db:schema:import: import the
|
14
|
-
schema file into the current database (on\n error, check if your schema.rb has
|
15
|
-
\":force => true\" on the create table\n statements\n ./script/generate migration
|
16
|
-
MigrationName: generate a new migration with a\n new 'highest' version (run './script/generate
|
17
|
-
migration' for this info at\n your fingertips)\n rake db:migrate: migrate
|
18
|
-
your current database to the most recent version\n rake db:migrate VERSION=5:
|
19
|
-
migrate your current database to a specific\n version (in this case, version
|
20
|
-
5)\n rake db:rollback: migrate down one migration\n rake db:rollback STEP=3:
|
21
|
-
migrate down three migrations\n rake db:migrate RAILS_ENV=production: migrate
|
22
|
-
your production database\n \n SQL:\n Queries can be executed directly:\n execute
|
23
|
-
'ALTER TABLE researchers ADD CONSTRAINT fk_researchers_departments\n FOREIGN
|
24
|
-
KEY ( department_id ) REFERENCES departments( id )'\n \n Example Migration:\n
|
25
|
-
\ class UpdateUsersAndCreateProducts < ActiveRecord::Migration\n def self.up\n
|
26
|
-
\ rename_column \"users\", \"password\", \"hashed_password\" \n remove_column
|
27
|
-
\"users\", \"email\" \n \n User.reset_column_information\n User.find(:all).each{|u|
|
28
|
-
#do something with u}\n \n create_table \"products\", :force => true do
|
29
|
-
|t|\n t.column \"name\", :text\n t.column \"description\", :text\n
|
30
|
-
\ t.column \"price\", :decimal, :precision => 9, :scale => 2\n t.column
|
31
|
-
\"category_id\", :integer\n end\n \n #the rails 2.0 way:\n create_table
|
32
|
-
:people do |t|\n t.integer :account_id\n t.string :first_name,
|
33
|
-
:last_name, :null => false\n t.text :description\n t.references
|
34
|
-
:category # is the equivalent of t.integer :category_id\n t.timestamps\n
|
35
|
-
\ end\n end\n \n def self.down\n rename_column \"users\",
|
36
|
-
\"hashed_password\", \"password\" \n add_column \"users\", \"email\", :string\n
|
37
|
-
\ drop_table \"products\" \n end\n end\n \n Find Highest version:\n
|
38
|
-
\ script/runner \"puts ActiveRecord::Migrator.current_version\"\n \n Database
|
39
|
-
Mapping\n \n Rails | db2 | mysql | openbase | Oracle
|
40
|
-
\ |\n --- | --- | --- | --- | --- |\n
|
41
|
-
\ :binary | blob(32678) | blob | object | blob |\n :boolean
|
42
|
-
\ | decimal(1) | tinyint(1) | boolean | number(10) |\n :date |
|
43
|
-
date | date | date | date |\n :datetime | timestamp
|
44
|
-
\ | datetime | datetime | date |\n :decimal | decimal |
|
45
|
-
decimal | decimal | decimal |\n :float | float | float
|
46
|
-
\ | float | number |\n :integer | int | int(11)
|
47
|
-
\ | integer | number(38) |\n :string | varchar(255) | varchar(255)
|
48
|
-
| char(4096) | varchar2(255) |\n :text | clob(32768) | text | text
|
49
|
-
\ | clob |\n :time | time | time | time |
|
50
|
-
date |\n :timestamp | timestamp | datetime | timestamp | date
|
51
|
-
\ |\n \n Rails | postgresql | sqlite | sqlserver | Sybase
|
52
|
-
\ |\n --- | --- | --- | --- | --- |\n
|
53
|
-
\ :binary | bytea | blob | image | image |\n :boolean
|
54
|
-
\ | boolean | boolean | bit | bit |\n :date |
|
55
|
-
date | date | datetime | datetime |\n :datetime | timestamp
|
56
|
-
\ | datetime | datetime | datetime |\n :decimal | decimal |
|
57
|
-
decimal | decimal | decimal |\n :float | float | float
|
58
|
-
\ | float(8) | float(8) |\n :integer | integer | integer
|
59
|
-
\ | int | int |\n :string | * | varchar(255)
|
60
|
-
| varchar(255) | varchar(255) |\n :text | text | text | text
|
61
|
-
\ | text |\n :time | time | datetime | datetime
|
62
|
-
\ | time |\n :timestamp | timestamp | datetime | datetime |
|
63
|
-
timestamp |"
|
data/sheets/sprintf.yml
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
---
|
2
|
-
sprintf: ! " %b => Binary integer\n %c => Single character\n %d => Decimal
|
3
|
-
integer\n %e => Decimal integer displayed in exponential form (3e+07)\n %E
|
4
|
-
\ => Decimal integer displayed in exponential form (3E+07)\n %f => Floating
|
5
|
-
point number\n %g => Same as %e if exponent is less than -4, %f otherwise\n %G
|
6
|
-
\ => Same as %E if exponent is less than -4, %f otherwise\n %o => Octal
|
7
|
-
integer\n %s => String\n %u => Unsigned decimal integer\n %x => Hexadecimal
|
8
|
-
integer (2a)\n %X => Hexadecimal integer uppercase (2A)\n %02d => 0 padded
|
9
|
-
two digits\n %.02f => round to the hundredths\n %+ => +/- sign\n \n width
|
10
|
-
& alignment\n \"%10s\" % \"hello\" => \" hello\" \n \"%-10s\" % \"hello\"
|
11
|
-
=> \"hello \""
|
data/sheets/status_codes.yml
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
---
|
2
|
-
status_codes: ! " Use these codes for the #head or #render methods. ex:\n head
|
3
|
-
:ok\n render :file => '404.html.erb', :status => :not_found\n \n 1xx Informational\n
|
4
|
-
\ \n 100 => :continue\n 101 => :switching_protocols\n 102 => :processing\n \n
|
5
|
-
\ 2xx Success\n \n 200 => :ok\n 201 => :created\n 202 => :accepted\n 203 =>
|
6
|
-
:non_authoritative_information\n 204 => :no_content\n 205 => :reset_content\n
|
7
|
-
\ 206 => :partial_content\n 207 => :multi_status\n 226 => :im_used\n \n 3xx
|
8
|
-
Redirection\n \n 300 => :multiple_choices\n 301 => :moved_permanently\n 302
|
9
|
-
=> :found\n 303 => :see_other\n 304 => :not_modified\n 305 => :use_proxy\n 307
|
10
|
-
=> :temporary_redirect\n \n 4xx Client Error\n \n 400 => :bad_request\n 401
|
11
|
-
=> :unauthorized\n 402 => :payment_required\n 403 => :forbidden\n 404 => :not_found\n
|
12
|
-
\ 405 => :method_not_allowed\n 406 => :not_acceptable\n 407 => :proxy_authentication_required\n
|
13
|
-
\ 408 => :request_timeout\n 409 => :conflict\n 410 => :gone\n 411 => :length_required\n
|
14
|
-
\ 412 => :precondition_failed\n 413 => :request_entity_too_large\n 414 => :request_uri_too_long\n
|
15
|
-
\ 415 => :unsupported_media_type\n 416 => :requested_range_not_satisfiable\n 417
|
16
|
-
=> :expectation_failed\n 422 => :unprocessable_entity\n 423 => :locked\n 424
|
17
|
-
=> :failed_dependency\n 426 => :upgrade_required\n \n 5xx Server Error\n \n
|
18
|
-
\ 500 => :internal_server_error\n 501 => :not_implemented\n 502 => :bad_gateway\n
|
19
|
-
\ 503 => :service_unavailable\n 504 => :gateway_timeout\n 505 => :http_version_not_supported\n
|
20
|
-
\ 507 => :insufficient_storage\n 510 => :not_extended"
|
data/sheets/strftime.yml
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
---
|
2
|
-
strftime: ! "Ruby 1.8.7\r\n %a - The abbreviated weekday name (“Sun”)\r\n %A - The
|
3
|
-
\ full weekday name (“Sunday”)\r\n %b - The abbreviated month name (“Jan”)\r\n
|
4
|
-
\ %B - The full month name (“January”)\r\n %c - The preferred local date and
|
5
|
-
time representation\r\n %d - Day of the month (01..31)\r\n %H - Hour of the day,
|
6
|
-
24-hour clock (00..23)\r\n %I - Hour of the day, 12-hour clock (01..12)\r\n %l
|
7
|
-
- Hour of the day, 12-hour clock without leading zero (1..12)\r\n %j - Day of the
|
8
|
-
year (001..366)\r\n %m - Month of the year (01..12)\r\n %M - Minute of the hour
|
9
|
-
(00..59)\r\n %p - Meridian indicator (“AM” or “PM”)\r\n %S - Second of the minute
|
10
|
-
(00..60)\r\n %U - Week number of the current year,\r\n starting with
|
11
|
-
the first Sunday as the first\r\n day of the first week (00..53)\r\n %W
|
12
|
-
- Week number of the current year,\r\n starting with the first Monday
|
13
|
-
as the first\r\n day of the first week (00..53)\r\n %w - Day of the week
|
14
|
-
(Sunday is 0, 0..6)\r\n %x - Preferred representation for the date alone, no time\r\n
|
15
|
-
\ %X - Preferred representation for the time alone, no date\r\n %y - Year without
|
16
|
-
a century (00..99)\r\n %Y - Year with century\r\n %Z - Time zone name\r\n %%
|
17
|
-
- Literal “%” character\r\n\r\n t = Time.now\r\n t.strftime(\"Printed on %m/%d/%Y\")
|
18
|
-
\ #=> \"Printed on 04/09/2003\"\r\n t.strftime(\"at %I:%M%p\") #=>
|
19
|
-
\"at 08:56AM\"\r\n\r\nRuby 1.9\r\n %a - The abbreviated weekday name (“Sun”)\r\n
|
20
|
-
\ %A - The full weekday name (“Sunday”)\r\n %b - The abbreviated month name
|
21
|
-
(“Jan”)\r\n %B - The full month name (“January”)\r\n %c - The preferred local
|
22
|
-
date and time representation\r\n %d - Day of the month (01..31)\r\n %e - Day of
|
23
|
-
the month,\r\n a single digit is preceded by a space (range ' 1' to '31')\r\n
|
24
|
-
\ %F - Equivalent to %Y-%m-%d (the ISO 8601 date format)\r\n %H - Hour of the day,
|
25
|
-
24-hour clock (00..23)\r\n %I - Hour of the day, 12-hour clock (01..12)\r\n %j
|
26
|
-
- Day of the year (001..366)\r\n %L - Millisecond of the second (000..999)\r\n
|
27
|
-
\ %m - Month of the year (01..12)\r\n %M - Minute of the hour (00..59)\r\n %N
|
28
|
-
- Fractional seconds digits, default is 9 digits (nanosecond)\r\n %3N millisecond
|
29
|
-
(3 digits)\r\n %6N microsecond (6 digits)\r\n %9N nanosecond
|
30
|
-
(9 digits)\r\n %12N picosecond (12 digits)\r\n %p - Meridian indicator
|
31
|
-
(“AM” or “PM”)\r\n %P - Meridian indicator (“am” or “pm”)\r\n %s - Number
|
32
|
-
of seconds since 1970-01-01 00:00:00 UTC.\r\n %S - Second of the minute (00..60)\r\n
|
33
|
-
\ %U - Week number of the current year,\r\n starting with the first Sunday
|
34
|
-
as the first\r\n day of the first week (00..53)\r\n %W - Week number
|
35
|
-
\ of the current year,\r\n starting with the first Monday as the first\r\n
|
36
|
-
\ day of the first week (00..53)\r\n %w - Day of the week (Sunday is 0,
|
37
|
-
0..6)\r\n %x - Preferred representation for the date alone, no time\r\n %X - Preferred
|
38
|
-
representation for the time alone, no date\r\n %y - Year without a century (00..99)\r\n
|
39
|
-
\ %Y - Year with century\r\n %z - Time zone offset from UTC (+/-0000, e.g. EST
|
40
|
-
= -0500)\r\n %Z - Time zone name\r\n %% - Literal “%” character\r\n\r\n t =
|
41
|
-
Time.now #=> 2007-11-19 08:37:48 -0600\r\n t.strftime(\"Printed
|
42
|
-
on %m/%d/%Y\") #=> \"Printed on 11/19/2007\"\r\n t.strftime(\"at %I:%M%p\")
|
43
|
-
\ #=> \"at 08:37AM\"\r\n\r\nControlling leading padding in Ruby 1.9\r\n
|
44
|
-
\ These codes work with any format code. %I is used as an example.\r\n %-I - remove
|
45
|
-
any leading zeroes or spaces (“1”)\r\n %_I - force a leading space (and no leading
|
46
|
-
zeroes) if necessary (“ 1”)\r\n %0I - force a leading zero (and no leading spaces)
|
47
|
-
if necessary (“01”)"
|