This commit is contained in:
Rico Sta. Cruz 2015-07-17 04:19:25 +08:00
parent ee7f668741
commit a57d0ea90d
9 changed files with 277 additions and 50 deletions

61
awscli.md Normal file
View File

@ -0,0 +1,61 @@
---
title: AWS CLI
---
### EC2
```
aws ec2 describe-instances
aws ec2 start-instances --instance-ids i-12345678c
```
### S3
```
aws s3 ls s3://mybucket
aws s3 cp myfolder s3://mybucket/folder --recursive
aws s3 sync myfolder s3://mybucket/folder --exclude *.tmp
```
### ECS
```
aws ecs create-cluster
--cluster-name=NAME
--generate-cli-skeleton
aws ecs create-service
```
### Homebrew
```
brew install awscli
aws configure
```
## Elastic Beanstalk
### Configuration
* .elasticbeanstalk/config.yml - application config
* .elasticbeanstalk/dev-env.env.yml - environment config
```
eb config
```
See: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options.html
## ebextensions
* see <http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers.html>
* see <http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html>
----
See:
* [AWS CLI](https://aws.amazon.com/cli/)
* [Documentation](http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)
* [All commands](http://docs.aws.amazon.com/cli/latest/reference/#available-services)

View File

@ -148,5 +148,16 @@ expect(page).to have_unchecked_field
expect(page).to have_xpath expect(page).to have_xpath
``` ```
## Page object
```rb
page.status_code == 200
page.response_headers
```
- <http://www.rubydoc.info/github/jnicklas/capybara/master/Capybara/Session>
## See also
- <http://rubydoc.info/github/jnicklas/capybara/Capybara/RSpecMatchers> - <http://rubydoc.info/github/jnicklas/capybara/Capybara/RSpecMatchers>
- <http://www.rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Matchers> - <http://www.rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Matchers>

17
eslint.md Normal file
View File

@ -0,0 +1,17 @@
---
title: eslint
---
```js
// "comma-dangle": "always" ("always-multiline", "never")
var foo = {
bar: "baz",
qux: "quux",
};
var arr = [1,2,];
```
```
// "yoda": "always" ("never")
if ("red" === color)
```

View File

@ -7,23 +7,37 @@ expect(x).toBe(y)
.toBe(val) .toBe(val)
.toEqual(val) .toEqual(val)
.toThrow(err) .toThrow(err)
.toExist .toExist /* aka: toBeTruthy */
.toNotExist /* aka: toBeFalsy */
.toBeA(constructor) .toBeA(constructor)
.toBeA('string') .toBeA('string')
.toMatch(/expr/) .toMatch(/expr/)
.toBeLessThan(n) .toBeLessThan(n)
.toBeGreaterThan(n) .toBeGreaterThan(n)
.toInclude(val) .toInclude(val) /* aka: toContain */
.toExclude(val) .toExclude(val)
/* also: toNotBe, toNotEqual, etc */
``` ```
### Spies
```js ```js
spy = expect.spyOn(video, 'play') spy = expect.spyOn(video, 'play')
expect(spy.calls.length).toEqual(1);
expect(spy.calls[0].context).toBe(video); spy = expect.spyOn(...)
expect(spy.calls[0].arguments).toEqual([ 'some', 'args' ]); .andCallThrough() /* pass through */
expect(spy).toHaveBeenCalled(); .andCall(fn)
expect(spy).toHaveBeenCalledWith('some', 'args'); .andThrow(exception)
.andReturn(value)
expect(spy.calls.length).toEqual(1)
expect(spy.calls[0].context).toBe(video)
expect(spy.calls[0].arguments).toEqual([ 'some', 'args' ])
expect(spy.getLastCall().arguments).toEqual(...)
expect(spy).toHaveBeenCalled()
expect(spy).toHaveBeenCalledWith('some', 'args')
``` ```
https://www.npmjs.com/package/expect https://www.npmjs.com/package/expect

21
metalsmith.md Normal file
View File

@ -0,0 +1,21 @@
---
title: Metalsmith
---
### [metalsmith-templates](https://www.npmjs.com/package/metalsmith-templates)
```js
"plugins": {
"metalsmith-templates": {
"engine": "swig",
"directory": "_layouts"
}
}
```
Use `{{ contents }}` to bring it out
Engines:
* swig (like liquid)

View File

@ -8,17 +8,22 @@ This is a mocha template that loads js/css from cdn.
<!doctype html> <!doctype html>
<html> <html>
<head> <head>
<meta charset='utf-8'>
<title>Mocha</title> <title>Mocha</title>
<meta charset="utf-8"> <meta name='viewport' content='width=device-width, initial-scale=1.0'>
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href='https://cdn.rawgit.com/mochajs/mocha/2.2.5/mocha.css' rel='stylesheet' />
<link href="https://cdn.rawgit.com/mochajs/mocha/2.2.5/mocha.css" rel="stylesheet" />
</head> </head>
<body> <body>
<div id="mocha"></div> <div id='mocha'></div>
<script src="https://cdn.rawgit.com/mochajs/mocha/2.2.5/mocha.js"></script> <script src='https://cdn.rawgit.com/mochajs/mocha/2.2.5/mocha.js'></script>
<script src="https://cdn.rawgit.com/chaijs/chai/2.3.0/chai.js"></script> <script src='https://cdn.rawgit.com/chaijs/chai/2.3.0/chai.js'></script>
<script>mocha.setup('bdd')</script <script>window.onerror=function(msg,url,line){document.getElementById('mocha').innerHTML+='<h1>'+msg+'</'+'h1>'+'<h2>'+url+':'+line+'</'+'h2>';return false}</script>
<script src="tests.js"></script><!-- replace this --> <script>mocha.setup('bdd')</script>
<!-- what to test: -->
<script src='../index.js'></script>
<!-- tests to run: -->
<script src='first_test.js'></script>
<script src='second_test.js'></script>
<script>mocha.run()</script> <script>mocha.run()</script>
</body> </body>
</html> </html>

View File

@ -97,45 +97,20 @@ expect { thing.approve! }.to change(thing, :status).
expect { thing.destroy }.to change(Thing, :count).by(-1) expect { thing.destroy }.to change(Thing, :count).by(-1)
``` ```
### Mocking - basic ### Double
book.stub(:title) { "The RSpec Book" } ```rb
book.stub(:title => "The RSpec Book") book = double('book')
book.stub(:title).and_return("The RSpec Book") book = instance_double('Book', pages: 250)
```
# First arg is a name, it's optional ### Method stubs
book = double("book", :title => "The RSpec Book")
### Mocking - consecutive return values ```rb
allow(die).to receive(:roll) { 3 }
```
die.stub(:roll).and_return(1,2,3) https://relishapp.com/rspec/rspec-mocks/docs
die.roll # => 1
die.roll # => 2
die.roll # => 3
die.roll # => 3
die.roll # => 3
### Expectations
expect(double).to receive(:msg)
expect(double).to receive(:msg).with(no_args())
expect(double).to receive(:msg).with(any_args())
expect(double).to receive(:msg).with(1, kind_of(Numeric), "b") #2nd argument can any kind of Numeric
expect(double).to receive(:msg).with(1, boolean(), "b") #2nd argument can true or false
expect(double).to receive(:msg).with(1, /abc/, "b") #2nd argument can be any String matching the submitted Regexp
expect(double).to receive(:msg).with(1, anything(), "b") #2nd argument can be anything at all
expect(double).to receive(:msg).with(1, ducktype(:abs, :div), "b") #2nd argument can be object that responds to #abs and #div
expect(double).to receive(:msg).once
expect(double).to receive(:msg).twice
expect(double).to receive(:msg).exactly(n).times
expect(double).to receive(:msg).at_least(:once)
expect(double).to receive(:msg).at_least(:twice)
expect(double).to receive(:msg).at_least(n).times
expect(double).to receive(:msg).at_most(:once)
expect(double).to receive(:msg).at_most(:twice)
expect(double).to receive(:msg).at_most(n).times
expect(double).to receive(:msg).any_number_of_times
## Subjects ## Subjects

38
saucelabs.md Normal file
View File

@ -0,0 +1,38 @@
Sign up for opensauce
- http://saucelabs.com/opensauce
Install zuul
```
npm i -g zuul
```
Configure zuul
```yml
# ~/.zuulrc
sauce_username: me
sauce_key: abc12348-e3e2-...
```
Add .zuul.yml to your project
```yml
# .zuul.yml
ui: mocha-bdd
browsers:
- name: chrome
version: latest
- name: ie
version: 6..latest
- name: firefox
version: latest
```
Try to run tests
```
zuul test/test.js
zuul --local test/test.js
```

85
slim.md Normal file
View File

@ -0,0 +1,85 @@
---
title: Slim
---
```slim
doctype html
html
head
title Slim Examples
meta[charset='utf-8']
meta(name="keywords" content="template language")
meta name="author" content=author
meta property='og:image' content=asset_url('foo.png')
meta property='og:image' content=(path_to_user user)
meta(
property='description'
content='this is the song that never ends')
```
### Ruby attributes
```slim
a class=[:menu,:highlight]
.card *{'data-url' => place_path(place)}
```
### Inline ruby
```slim
ruby:
def foobar
"hello"
end
div= foobar
```
### Embedded js
```slim
javascript:
alert('Slim supports embedded javascript!')
```
### Comments
```slim
/ Comment
/! HTML comment
```
### Ruby
```slim
== yield
= t('.hello')
- 3.times do |i|
div
```
### Verbatim text
```slim
div
| This is text
it is nice
```
### Inline HTML
```slim
<div class='foo'>
- if articles.empty?
| Nothing here
</div>
```
### Inline tags
```slim
ul
li: a(href='/') Home
```
<http://slim-lang.com/>