More Related Content Similar to How to make a Ruby Gem - Austin on Rails, January 2014 Similar to How to make a Ruby Gem - Austin on Rails, January 2014 (20) How to make a Ruby Gem - Austin on Rails, January 20142. Who is this talk for?
•Me, a few months ago
•Someone who is:
•new to Rails
•new to Ruby
•new to programming
2
3. What is a gem?
• Container that hold widely-reusable code.
• Code that is useable in many different contexts.
3
4. Tools to help with making gems:
•Bundler
•Jeweler
•gemcutter
•others!
4
8. => create adventure/Gemfile
create adventure/Rakefile
create adventure/LICENSE.txt
create adventure/README.md
create adventure/.gitignore
create adventure/adventure.gemspec
create adventure/lib/adventure.rb
create adventure/lib/adventure/version.rb
Initializing git repo in /Users/me/code/adventure
8
12. adventure.gemspec
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'adventure/version'
Gem::Specification.new
spec.name
=
spec.version
=
spec.authors
=
spec.email
=
spec.summary
=
spec.description
=
spec.homepage
=
spec.license
=
spec.files
spec.executables
spec.test_files
spec.require_paths
=
=
=
=
do |spec|
"adventure"
Adventure::VERSION
["Clare Glinka"]
["glinka.cb@gmail.com"]
%q{TODO: Write a short summary. Required.}
%q{TODO: Write a longer description. Optional.}
""
"MIT"
`git ls-files`.split($/)
spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.files.grep(%r{^(test|spec|features)/})
["lib"]
spec.add_development_dependency "bundler", "~> 1.4"
spec.add_development_dependency "rake"
end
12
15. # coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'adventure/version'
Gem::Specification.new
spec.name
=
spec.version
=
spec.authors
=
spec.email
=
spec.summary
=
spec.description
=
spec.homepage
=
spec.license
=
spec.files
spec.executables
spec.test_files
spec.require_paths
=
=
=
=
do |spec|
"adventure"
Adventure::VERSION
["Clare Glinka"]
["glinka.cb@gmail.com"]
%q{TODO: Write a short summary. Required.}
%q{TODO: Write a longer description. Optional.}
""
"MIT"
`git ls-files`.split($/)
spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.files.grep(%r{^(test|spec|features)/})
["lib"]
spec.add_development_dependency "bundler", "~> 1.4"
spec.add_development_dependency "rake"
end
15
17. # coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'adventure/version'
Gem::Specification.new
spec.name
=
spec.version
=
spec.authors
=
spec.email
=
spec.summary
=
spec.description
=
spec.homepage
=
spec.license
=
spec.files
spec.executables
spec.test_files
spec.require_paths
=
=
=
=
do |spec|
"adventure"
Adventure::VERSION
["Clare Glinka"]
["glinka.cb@gmail.com"]
%q{TODO: Write a short summary. Required.}
%q{TODO: Write a longer description. Optional.}
""
"MIT"
`git ls-files`.split($/)
spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.files.grep(%r{^(test|spec|features)/})
["lib"]
spec.add_development_dependency "bundler", "~> 1.4"
spec.add_development_dependency "rake"
end
17
20. Versioning
• Use semantic versioning.
•0.0.X
- bugfixs
•0.X.0
- additional functionality that is backward compatible.
•X.0.0
- additional functionality that breaks backwards compatibility.
20
23. # coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'adventure/version'
Gem::Specification.new
spec.name
=
spec.version
=
spec.authors
=
spec.email
=
spec.summary
=
spec.description
=
spec.homepage
=
spec.license
=
spec.files
spec.executables
spec.test_files
spec.require_paths
=
=
=
=
do |spec|
"adventure"
Adventure::VERSION
["Clare Glinka"]
["glinka.cb@gmail.com"]
%q{TODO: Write a short summary. Required.}
%q{TODO: Write a longer description. Optional.}
""
"MIT"
`git ls-files`.split($/)
spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.files.grep(%r{^(test|spec|features)/})
["lib"]
spec.add_development_dependency "bundler", "~> 1.4"
spec.add_development_dependency "rake"
end
23
24. # coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'adventure/version'
Gem::Specification.new
spec.name
=
spec.version
=
spec.authors
=
spec.email
=
spec.summary
=
spec.description
=
spec.homepage
=
spec.license
=
spec.files
spec.executables
spec.test_files
spec.require_paths
=
=
=
=
do |spec|
"adventure"
Adventure::VERSION
["Clare Glinka"]
["glinka.cb@gmail.com"]
"Adventure plot generator"
""
""
"MIT"
`git ls-files`.split($/)
spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.files.grep(%r{^(test|spec|features)/})
["lib"]
spec.add_development_dependency "bundler", "~> 1.4"
spec.add_development_dependency "rake"
end
24
26. # coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'adventure/version'
Gem::Specification.new
spec.name
=
spec.version
=
spec.authors
=
spec.email
=
spec.summary
=
spec.description
=
spec.homepage
=
spec.license
=
spec.files
spec.executables
spec.test_files
spec.require_paths
=
=
=
=
do |spec|
"adventure"
Adventure::VERSION
["Clare Glinka"]
["glinka.cb@gmail.com"]
"Adventure plot generator"
""
""
"MIT"
`git ls-files`.split($/)
spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.files.grep(%r{^(test|spec|features)/})
["lib"]
spec.add_development_dependency "bundler", "~> 1.4"
spec.add_development_dependency "rake"
end
26
27. Protect the load path!
$ pry
[1] pry(main)> $LOAD_PATH
=> ["/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/coderay-1.1.0/lib",
"/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/slop-3.4.7/lib",
"/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/method_source-0.8.2/lib",
"/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/pry-0.9.12.4/lib",
"/rbenv/versions/2.0.0-p353/lib/ruby/site_ruby/2.0.0",
"/rbenv/versions/2.0.0-p353/lib/ruby/site_ruby/2.0.0/x86_64-darwin13.0.0",
"/rbenv/versions/2.0.0-p353/lib/ruby/site_ruby",
"/rbenv/versions/2.0.0-p353/lib/ruby/vendor_ruby/2.0.0",
"/rbenv/versions/2.0.0-p353/lib/ruby/vendor_ruby/2.0.0/x86_64-darwin13.0.0",
"/rbenv/versions/2.0.0-p353/lib/ruby/vendor_ruby",
"/rbenv/versions/2.0.0-p353/lib/ruby/2.0.0",
"/rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/x86_64-darwin13.0.0"]
27
28. Protect the load path!
[2] pry(main)> require 'adventure'
=> true
[3] pry(main)> $LOAD_PATH
=> ["/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/coderay-1.1.0/lib",
"/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/slop-3.4.7/lib",
"/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/method_source-0.8.2/lib",
"/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/pry-0.9.12.4/lib",
"/rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/adventure-0.0.1/lib",
"/rbenv/versions/2.0.0-p353/lib/ruby/site_ruby/2.0.0",
"/rbenv/versions/2.0.0-p353/lib/ruby/site_ruby/2.0.0/x86_64-darwin13.0.0",
"/rbenv/versions/2.0.0-p353/lib/ruby/site_ruby",
"/rbenv/versions/2.0.0-p353/lib/ruby/vendor_ruby/2.0.0",
"/rbenv/versions/2.0.0-p353/lib/ruby/vendor_ruby/2.0.0/x86_64-darwin13.0.0",
"/rbenv/versions/2.0.0-p353/lib/ruby/vendor_ruby",
"/rbenv/versions/2.0.0-p353/lib/ruby/2.0.0",
"/rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/x86_64-darwin13.0.0"]
28
31. # coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'adventure/version'
Gem::Specification.new
spec.name
=
spec.version
=
spec.authors
=
spec.email
=
spec.summary
=
spec.description
=
spec.homepage
=
spec.license
=
spec.files
spec.executables
spec.test_files
spec.require_paths
=
=
=
=
do |spec|
"adventure"
Adventure::VERSION
["Clare Glinka"]
["glinka.cb@gmail.com"]
"Adventure plot generator"
""
""
"MIT"
`git ls-files`.split($/)
spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.files.grep(%r{^(test|spec|features)/})
["lib"]
spec.add_development_dependency "bundler", "~> 1.4"
spec.add_development_dependency "rake"
end
31
33. $
pry
[1]
pry(main)>
`git
ls-‐files`
=>
".gitignorenGemfilenLICENSE.txtnREADME.mdnRakefile
nadventure.gemspecnlib/adventure.rbnlib/adventure/version.rb
n"
[2]
pry(main)>
`git
ls-‐files`.split($)
=>
[".gitignore",
"Gemfile",
"LICENSE.txt",
"README.md",
"Rakefile",
"adventure.gemspec",
"lib/adventure.rb",
"lib/adventure/version.rb"]
33
34. $
pry
[1]
pry(main)>
`git
ls-‐files`
=>
".gitignorenGemfilenLICENSE.txtnREADME.mdnRakefile
nadventure.gemspecnlib/adventure.rbnlib/adventure/version.rb
n"
[2]
pry(main)>
`git
ls-‐files`.split($)
=>
[".gitignore",
"Gemfile",
"LICENSE.txt",
"README.md",
"Rakefile",
"adventure.gemspec",
"lib/adventure.rb",
"lib/adventure/version.rb"]
34
35. # coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'adventure/version'
Gem::Specification.new
spec.name
=
spec.version
=
spec.authors
=
spec.email
=
spec.summary
=
spec.description
=
spec.homepage
=
spec.license
=
do |spec|
"adventure"
Adventure::VERSION
["Clare Glinka"]
["glinka.cb@gmail.com"]
"Adventure plot generator"
""
""
"MIT"
spec.files
= [".gitignore", "Gemfile", "LICENSE.txt",
"README.md", "Rakefile", "adventure.gemspec", "lib/adventure.rb", "lib/
adventure/version.rb"]
spec.executables
= spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.test_files
= spec.files.grep(%r{^(test|spec|features)/})
spec.require_paths = ["lib"]
spec.add_development_dependency "bundler", "~> 1.4"
spec.add_development_dependency "rake"
end
35
36. # coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'adventure/version'
Gem::Specification.new
spec.name
=
spec.version
=
spec.authors
=
spec.email
=
spec.summary
=
spec.description
=
spec.homepage
=
spec.license
=
spec.files
spec.executables
spec.test_files
spec.require_paths
=
=
=
=
do |spec|
"adventure"
Adventure::VERSION
["Clare Glinka"]
["glinka.cb@gmail.com"]
"Adventure plot generator"
""
""
"MIT"
`git ls-files`.split($/)
spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.files.grep(%r{^(test|spec|features)/})
["lib"]
spec.add_development_dependency "bundler", "~> 1.4"
spec.add_development_dependency "rake"
end
36
37. # coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'adventure/version'
Gem::Specification.new
spec.name
=
spec.version
=
spec.authors
=
spec.email
=
spec.summary
=
spec.description
=
spec.homepage
=
spec.license
=
spec.files
spec.executables
spec.test_files
spec.require_paths
=
=
=
=
do |spec|
"adventure"
Adventure::VERSION
["Clare Glinka"]
["glinka.cb@gmail.com"]
"Adventure plot generator"
""
""
"MIT"
Dir.glob(‘**/*’)
spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.files.grep(%r{^(test|spec|features)/})
["lib"]
spec.add_development_dependency "bundler", "~> 1.4"
spec.add_development_dependency "rake"
end
37
38. $
pry
[1]
pry(main)>
Dir.glob('**/**')
=>
["adventure.gemspec",
"Gemfile",
"lib",
"lib/adventure",
"lib/adventure/random.txt",
"lib/adventure/version.rb",
"lib/adventure.rb",
"LICENSE.txt",
"Rakefile",
"README.md"]
38
42. # coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'adventure/version'
Gem::Specification.new
spec.name
=
spec.version
=
spec.authors
=
spec.email
=
spec.summary
=
spec.description
=
spec.homepage
=
spec.license
=
spec.files
spec.executables
spec.test_files
spec.require_paths
=
=
=
=
do |spec|
"adventure"
Adventure::VERSION
["Clare Glinka"]
["glinka.cb@gmail.com"]
"Adventure plot generator"
""
""
"MIT"
`git ls-files`.split($/)
spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.files.grep(%r{^(test|spec|features)/})
["lib"]
spec.add_development_dependency "bundler", "~> 1.4"
spec.add_development_dependency "rake"
end
42
43. # coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'adventure/version'
Gem::Specification.new
spec.name
=
spec.version
=
spec.authors
=
spec.email
=
spec.summary
=
spec.description
=
spec.homepage
=
spec.license
=
spec.files
spec.executables
spec.test_files
spec.require_paths
=
=
=
=
do |spec|
"adventure"
Adventure::VERSION
["Clare Glinka"]
["glinka.cb@gmail.com"]
"Adventure plot generator"
""
"http://www.github.com/cglinka/adventure"
"MIT"
`git ls-files`.split($/)
spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.files.grep(%r{^(test|spec|features)/})
["lib"]
spec.add_development_dependency "bundler", "~> 1.4"
spec.add_development_dependency "rake"
end
43
45. # coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'adventure/version'
Gem::Specification.new
spec.name
=
spec.version
=
spec.authors
=
spec.email
=
spec.summary
=
spec.description
=
spec.homepage
=
spec.license
=
spec.files
spec.executables
spec.test_files
spec.require_paths
=
=
=
=
do |spec|
"adventure"
Adventure::VERSION
["Clare Glinka"]
["glinka.cb@gmail.com"]
"Adventure plot generator"
""
"http://www.github.com/cglinka/adventure"
"MIT"
`git ls-files`.split($/)
spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.files.grep(%r{^(test|spec|features)/})
["lib"]
spec.add_development_dependency "bundler", "~> 1.4"
spec.add_development_dependency "rake"
end
45
48. # coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'adventure/version'
Gem::Specification.new
spec.name
=
spec.version
=
spec.authors
=
spec.email
=
spec.summary
=
spec.description
=
spec.homepage
=
spec.license
=
spec.files
spec.executables
spec.test_files
spec.require_paths
=
=
=
=
do |spec|
"adventure"
Adventure::VERSION
["Clare Glinka"]
["glinka.cb@gmail.com"]
"Adventure plot generator"
""
"http://github.com/cglinka/adventure"
"MIT"
`git ls-files`.split($/)
spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.files.grep(%r{^(test|spec|features)/})
["lib"]
spec.add_development_dependency "bundler", "~> 1.4"
spec.add_development_dependency "rake"
end
48
52. Desired output:
“There is a disgruntled shopkeeper with a secret past and a
grad student with a knack for cooking.
They fight crime!”
52
53. require
"adventure/version"
module
Adventure
class
Plot
def
make_plot
characters
=
["a
clever
dragon",
"a
ruthless
detective",
"a
disgruntled
shopkeeper",
"an
aging
cowboy",
"a
grad
student",
"a
mystical
lizard"]
with
=
["nothing
left
to
loose",
"a
secret
past",
"an
enchanted
sword",
"a
grudge",
"a
knack
for
cooking"]
who
=
["likes
kebabs",
"organizes
poetry
nights",
"is
a
world-‐famous
cyclist",
"lived
in
a
circus"]
"There
is
#{characters.sample}
with
#{with.sample}
and
#{characters.sample}
who
#{who.sample}.
They
fight
crime!"
end
end
end
53
55. $ gem build adventure.gemspec
WARNING: no description specified
Successfully built RubyGem
Name: adventure
Version: 0.0.1
File: adventure-0.0.1.gem
55
56. adventure
├── Gemfile
├── Rakefile
├── LICENSE.txt
├── README.md
├──.gitignore
├── adventure.gemspec
├── adventure-0.0.1.gem
└── lib
├── adventure.rb
└── adventure
└── version.rb
56
57. $ gem install adventure-0.0.1.gem
Successfully installed adventure-0.0.1
1 gem installed
57
58. $
pry
[1]
pry(main)>
require
'adventure'
=>
true
[2]
pry(main)>
plot
=
Adventure::Plot.new
=>
#<Adventure::Plot:0x007fe2a4106498>
[3]
pry(main)>
plot.make_plot
=>
"There
is
a
grad
student
with
a
knack
for
cooking
and
a
ruthless
detective
who
likes
kebabs.
They
fight
crime!"
58
60. # coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'adventure/version'
Gem::Specification.new
spec.name
=
spec.version
=
spec.authors
=
spec.email
=
spec.summary
=
spec.description
=
spec.homepage
=
spec.license
=
spec.files
spec.executables
spec.test_files
spec.require_paths
=
=
=
=
do |spec|
"adventure"
Adventure::VERSION
["Clare Glinka"]
["glinka.cb@gmail.com"]
"Adventure plot generator"
""
"http://github.com/cglinka/adventure"
"MIT"
`git ls-files`.split($/)
spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.files.grep(%r{^(test|spec|features)/})
["lib"]
spec.add_development_dependency "bundler", "~> 1.4"
spec.add_development_dependency "rake"
end
60
64. $
rake
-‐T
rake
build
#
Build
adventure-‐0.0.1.gem
into
the
pkg
directory.
rake
install
#
Build
and
install
adventure-‐0.0.1.gem
into
system
gems.
rake
release
#
Create
tag
v0.0.1
and
build
and
push
adventure-‐0.0.1.gem
to
Rubygems
64
67. adventure
├── Gemfile
├── Rakefile
├── LICENSE.txt
├── README.md
├──.gitignore
├── adventure.gemspec
├── pkg
│
└── adventure-0.0.1.gem
└── lib
├── adventure.rb
└── adventure
└── version.rb
67
73. adventure.json
{
"characters":
[
"a
clever
dragon",
"a
ruthless
detective",
"a
disgruntled
shopkeeper",
"an
aging
cowboy",
"a
grad
student",
"a
mystical
lizard"
],
"with":
[
"nothing
left
to
loose",
"a
secret
past",
"an
enchanted
sword",
"a
grudge",
"a
knack
for
cooking"
],
"who":
[
"likes
kebabs",
"organizes
poetry
nights",
"is
a
world-‐famous
cyclist",
"lived
in
a
circus"
]
}
73
75. # coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'adventure/version'
Gem::Specification.new
spec.name
=
spec.version
=
spec.authors
=
spec.email
=
spec.summary
=
spec.description
=
spec.homepage
=
spec.license
=
spec.files
spec.executables
spec.test_files
spec.require_paths
=
=
=
=
do |spec|
"adventure"
Adventure::VERSION
["Clare Glinka"]
["glinka.cb@gmail.com"]
"Adventure plot generator"
""
"http://github.com/cglinka/adventure"
"MIT"
`git ls-files`.split($/)
spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.files.grep(%r{^(test|spec|features)/})
["lib"]
spec.add_dependency "json"
spec.add_development_dependency "bundler", "~> 1.4"
spec.add_development_dependency "rake"
end
75
76. $ bundle install
Resolving dependencies...
Using bundler (1.5.2)
Using json (1.7.7)
Using rake (0.9.6)
Using adventure (0.0.1) from source at .
Your bundle is complete!
76
77. require
"adventure/version"
module
Adventure
class
Plot
def
make_plot
characters
=
["a
clever
dragon",
"a
ruthless
detective",
"a
disgruntled
shopkeeper",
"an
aging
cowboy",
"a
grad
student",
"a
mystical
lizard"]
with
=
["nothing
left
to
loose",
"a
secret
past",
"an
enchanted
sword",
"a
grudge",
"a
knack
for
cooking"]
who
=
["likes
kebabs",
"organizes
poetry
nights",
"is
a
world-‐famous
cyclist",
"lived
in
a
circus"]
"There
is
#{characters.sample}
with
#{with.sample}
and
#{characters.sample}
who
#{who.sample}.
They
fight
crime!"
end
end
end
77
78. lib/adventure.rb
require
"adventure/version"
require
"json"
module
Adventure
class
Plot
def
make_plot(plotdevice)
plotholes
=
JSON.load(File.new(plotdevice))
characters
=
plotholes["characters"]
with
=
plotholes["with"]
who
=
plotholes["who"]
"There
is
#{characters.sample}
with
#{with.sample}
and
#{characters.sample}
who
#{who.sample}.
They
fight
crime!"
end
end
end
78
83. $
pry
[1]
pry(main)>
require
'adventure'
=>
true
[2]
pry(main)>
plot
=
Adventure::Plot.new
=>
#<Adventure::Plot:0x007fc079139e80>
[3]
pry(main)>
plot.make_plot('adventure.json')
=>
"There
is
a
clever
dragon
with
a
secret
past
and
a
clever
dragon
who
is
a
world-‐famous
cyclist.
They
fight
crime!"
83
85. # coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'adventure/version'
Gem::Specification.new
spec.name
=
spec.version
=
spec.authors
=
spec.email
=
spec.summary
=
spec.description
=
spec.homepage
=
spec.license
=
spec.files
spec.executables
spec.test_files
spec.require_paths
=
=
=
=
do |spec|
"adventure"
Adventure::VERSION
["Clare Glinka"]
["glinka.cb@gmail.com"]
"Adventure plot generator"
""
"http://github.com/cglinka/adventure"
"MIT"
`git ls-files`.split($/)
spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.files.grep(%r{^(test|spec|features)/})
["lib"]
spec.add_dependency "json"
spec.add_development_dependency "bundler", "~> 1.4"
spec.add_development_dependencyependency "rake"
spec.add_development_dependencyependency "rspec"
end
85
88. spec/spec_helper.rb
#
This
file
was
generated
by
the
`rspec
-‐-‐init`
command.
Conventionally,
all
#
specs
live
under
a
`spec`
directory,
which
RSpec
adds
to
the
`$LOAD_PATH`.
#
Require
this
file
using
`require
"spec_helper"`
to
ensure
that
it
is
only
#
loaded
once.
#
#
See
http://rubydoc.info/gems/rspec-‐core/RSpec/Core/Configuration
RSpec.configure
do
|config|
config.treat_symbols_as_metadata_keys_with_true_values
=
true
config.run_all_when_everything_filtered
=
true
config.filter_run
:focus
#
Run
specs
in
random
order
to
surface
order
dependencies.
If
you
find
an
#
order
dependency
and
want
to
debug
it,
you
can
fix
the
order
by
providing
#
the
seed,
which
is
printed
after
each
run.
#
-‐-‐seed
1234
config.order
=
'random'
end
88
89. spec/spec_helper.rb
require
'adventure'
#
This
file
was
generated
by
the
`rspec
-‐-‐init`
command.
Conventionally,
all
#
specs
live
under
a
`spec`
directory,
which
RSpec
adds
to
the
`$LOAD_PATH`.
#
Require
this
file
using
`require
"spec_helper"`
to
ensure
that
it
is
only
#
loaded
once.
#
#
See
http://rubydoc.info/gems/rspec-‐core/RSpec/Core/Configuration
RSpec.configure
do
|config|
config.treat_symbols_as_metadata_keys_with_true_values
=
true
config.run_all_when_everything_filtered
=
true
config.filter_run
:focus
#
Run
specs
in
random
order
to
surface
order
dependencies.
If
you
find
an
#
order
dependency
and
want
to
debug
it,
you
can
fix
the
order
by
providing
#
the
seed,
which
is
printed
after
each
run.
#
-‐-‐seed
1234
config.order
=
'random'
end
89
90. adventure
├── Gemfile
├── Rakefile
├── LICENSE.txt
├── README.md
├── .gitignore
├── .rspec
├── adventure.gemspec
├── pkg
├── lib
└── spec
├── spec_adventure.rb
└── spec_helper.rb
90
92. $ bundle exec rspec
Run options: include {:focus=>true}
All examples were filtered out; ignoring {:focus=>true}
.
Finished in 0.00052 seconds
1 example, 0 failures
Randomized with seed 38431
92
95. $ rake spec
Run options: include {:focus=>true}
All examples were filtered out; ignoring {:focus=>true}
.
Finished in 0.00052 seconds
1 example, 0 failures
Randomized with seed 38431
95