Slide 1

Slide 1 text

Set up Ruby Project Set up Ruby Project © nacyot 2015 - 1

Slide 2

Slide 2 text

RORLab 77ߣ૩ ݽ੐ 2014. 12. 23. 2015. 8. 31. update Set up Ruby Project © nacyot 2015 - 2

Slide 3

Slide 3 text

Daekwon Kim SMARTSTUDY Software & System Engineer Set up Ruby Project © nacyot 2015 - 3

Slide 4

Slide 4 text

Set up Ruby Project © nacyot 2015 - 4

Slide 5

Slide 5 text

Ruby On Rails Set up Ruby Project © nacyot 2015 - 5

Slide 6

Slide 6 text

rails new $ rails new Set up Ruby Project © nacyot 2015 - 6

Slide 7

Slide 7 text

೐۽ં౟ ౟ܻ $ tree -d -L 2 . ├── app │ ├── assets │ ├── controllers │ ├── models │ └── views ├── bin ├── config │ ├── environments │ ├── initializers ├── db │ └── migrate ├── lib ├── log ├── public ├── spec │ ├── controllers │ ├── models └── tmp Set up Ruby Project © nacyot 2015 - 7

Slide 8

Slide 8 text

೐۽ં౟ ౟ܻ(೧ࢸ ୎ࠗ) $ tree -d -L 2 . ├── app # য೒ܻா੉࣌ ௏٘ │ ├── assets # ীࣇ │ ├── controllers # ஶ౟܀۞ │ ├── models # ݽ؛ │ └── views # ࠭ ├── bin # प೯ ౵ੌ ├── config # ࢸ੿ │ ├── environments # ജ҃߹ ࢸ੿ │ ├── initializers # য೒ܻா੉࣌ ୡӝച झ௼݀౟ ├── db # ؘ੉ఠ߬੉झ ҙ۲ │ └── migrate # ݃੉Ӓۨ੉࣌ ├── lib # ۄ੉࠳۞ܻ ├── log # ۽Ӓ ├── public # ੿੸ ౵ੌ ├── spec # పझ౟ │ ├── controllers # ஶ౟܀۞ పझ౟ │ ├── models # ݽ؛ పझ౟ └── tmp # ੐द ౵ੌ Set up Ruby Project © nacyot 2015 - 8

Slide 9

Slide 9 text

झझ۽ ੗न੄ ਤ஖ܳ ঌҊ ੓਺ Set up Ruby Project © nacyot 2015 - 9

Slide 10

Slide 10 text

ۨੌझח ೐ۨ੐ਕ௼ Set up Ruby Project © nacyot 2015 - 10

Slide 11

Slide 11 text

ܖ࠺ Set up Ruby Project © nacyot 2015 - 11

Slide 12

Slide 12 text

ۨੌझח ೐ۨ੐ਕ௼ Set up Ruby Project © nacyot 2015 - 12

Slide 13

Slide 13 text

ܖ࠺ب ೐ۨ੐ਕ௼? Set up Ruby Project © nacyot 2015 - 13

Slide 14

Slide 14 text

ruby new $ mkdir my_awesome_ruby_project Set up Ruby Project © nacyot 2015 - 14

Slide 15

Slide 15 text

೐۽ં౟ ౟ܻ $ tree -d -L 2 . ├── foo/ ├── bar/ ├── my_library/ └── awesome.rb Set up Ruby Project © nacyot 2015 - 15

Slide 16

Slide 16 text

੗ਬ! Set up Ruby Project © nacyot 2015 - 16

Slide 17

Slide 17 text

ೞ૑݅, ҙण੸ੋ ҳઑо ઓ੤ . ȍȇȇ lib ȍȇȇ test ȍȇȇ Gemfile ȍȇȇ Rakefile Ȍȇȇ README.md Set up Ruby Project © nacyot 2015 - 17

Slide 18

Slide 18 text

૒੽ ٜ݅যࠁ੗! Set up Ruby Project © nacyot 2015 - 18

Slide 19

Slide 19 text

ੌױ READMEࠗఠ ٜ݅ӝ $ touch README.md ੍যࠁӝ : Readme Driven Development Set up Ruby Project © nacyot 2015 - 19

Slide 20

Slide 20 text

lib/ ٣۩షܻ ٜ݅ӝ $ mkdir lib Set up Ruby Project © nacyot 2015 - 20

Slide 21

Slide 21 text

ۄ੉࠳۞ܻ ౵ੌ ٜ݅ӝ $ touch lib/my_awesome_ruby_project.rb # lib/my_awesome_ruby_project.rb class MyAwesomeRubyProject end require './lib/my_awesome_ruby_project/awesome_cat' Set up Ruby Project © nacyot 2015 - 21

Slide 22

Slide 22 text

֎੐झಕ੉झ $ mkdir lib/my_awesome_ruby_project $ touch lib/my_awesome_ruby_project/awesome_cat.rb # lib/my_awesome_ruby_project_awesome_cat.rb class MyAwesomeRubyProject::AwesomeCat def mew "Nyaa~" end end Set up Ruby Project © nacyot 2015 - 22

Slide 23

Slide 23 text

ۄ੉࠳۞ܻ ࢎਊೞӝ [1] pry(main)> require('./lib/my_awesome_ruby_project') => true [2] pry(main)> my_cat = MyAwesomeRubyProject::AwesomeCat.new => # [3] pry(main)> my_cat.mew => "Nyaa~" Set up Ruby Project © nacyot 2015 - 23

Slide 24

Slide 24 text

׮द ࢓ಝࠁӝ . ├── lib │ ├── my_awesome_ruby_project │ │ └── awesome_cat.rb │ └── my_awesome_ruby_project.rb └── README.md Set up Ruby Project © nacyot 2015 - 24

Slide 25

Slide 25 text

Test ജ҃ ҳ୷ೞӝ Set up Ruby Project © nacyot 2015 - 25

Slide 26

Slide 26 text

RSpec $ bundle exec rspec /Users/... in `block in replace_gem': rspec-core is not part of the bundle. Add it to Gemfile. (Gem::LoadError) from /Users/...:22:in `' Set up Ruby Project © nacyot 2015 - 26

Slide 27

Slide 27 text

Bundler ੄ઓࢿ ҙܻ بҳ Set up Ruby Project © nacyot 2015 - 27

Slide 28

Slide 28 text

੄ઓࢿ ೐۽ં౟ীࢲ ࢎਊೞח ۄ੉࠳۞ܻ Set up Ruby Project © nacyot 2015 - 28

Slide 29

Slide 29 text

Gemfile ੄ઓࢿ ࢶ঱ ౵ੌ Set up Ruby Project © nacyot 2015 - 29

Slide 30

Slide 30 text

Gemfile ࢤࢿೞӝ $ bundle init Writing new Gemfile to /.../my_awesome_ruby_project/Gemfile # Gemfile source "https://rubygems.org" Set up Ruby Project © nacyot 2015 - 30

Slide 31

Slide 31 text

Gemfileী rspec ୶оೞӝ source "https://rubygems.org" gem "rspec" Set up Ruby Project © nacyot 2015 - 31

Slide 32

Slide 32 text

bundle install $ bundle install Fetching gem metadata from https://rubygems.org/......... Resolving dependencies... Using diff-lcs 1.2.5 Using rspec-support 3.1.2 Using rspec-core 3.1.7 Using rspec-expectations 3.1.2 Using rspec-mocks 3.1.3 Installing rspec 3.1.0 Using bundler 1.7.3 Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed. Set up Ruby Project © nacyot 2015 - 32

Slide 33

Slide 33 text

పझ౟ प೯ೞӝ $ bundle exec rspec No examples found. Finished in 0.00017 seconds (files took 0.04335 seconds to load) 0 examples, 0 failures Set up Ruby Project © nacyot 2015 - 33

Slide 34

Slide 34 text

No examples found Set up Ruby Project © nacyot 2015 - 34

Slide 35

Slide 35 text

పझ౟ ળ࠺ೞӝ $ mkdir -p spec/my_awesome_ruby_project/ $ touch spec/spec_helper.rb $ touch spec/my_awesome_ruby_project/awesome_cat_spec.rb # spec/spec_helper.rb require './lib/my_awesome_ruby_project' Set up Ruby Project © nacyot 2015 - 35

Slide 36

Slide 36 text

୐ (о૞) పझ౟ ੘ࢿೞӝ # spec/my_awesome_ruby_project/awesome_cat_spec.rb require './spec/spec_helper' describe MyAwesomeRubyProject::AwesomeCat do it "My first awesome test" end Set up Ruby Project © nacyot 2015 - 36

Slide 37

Slide 37 text

పझ౟ प೯ೞӝ $ bunedl exec rspec Pending: MyAwesomeRubyProject::AwesomeCat My first awesome test # Not yet implemented # ./spec/my_awesome_ruby_project/awesome_cat_spec.rb:4 Finished in 0.00029 seconds (files took 0.10246 seconds to load) 1 example, 0 failures, 1 pending Set up Ruby Project © nacyot 2015 - 37

Slide 38

Slide 38 text

୐ (૓૞) పझ౟ ੘ࢿೞӝ require './spec/spec_helper' describe MyAwesomeRubyProject::AwesomeCat do it "My first awesome test" do expect(MyAwesomeRubyProject::AwesomeCat.new.mew).to eq "Nyaa~" end end Set up Ruby Project © nacyot 2015 - 38

Slide 39

Slide 39 text

׮द, పझ౟ प೯ೞӝ $ rspec --color --format doc MyAwesomeRubyProject::AwesomeCat My first awesome test Finished in 0.00086 seconds (files took 0.09874 seconds to load) 1 example, 0 failures Set up Ruby Project © nacyot 2015 - 39

Slide 40

Slide 40 text

.rspec --color --format doc Set up Ruby Project © nacyot 2015 - 40

Slide 41

Slide 41 text

ৈӝө૑ ҳઑ . ├── lib │ ├── my_awesome_ruby_project │ │ └── awesome_cat.rb │ └── my_awesome_ruby_project.rb ├── spec │ ├── my_awesome_ruby_project │ │ └── awesome_cat_spec.rb │ └── spec_helper.rb ├── .rspec ├── Gemfile ├── Gemfile.lock └── README.md Set up Ruby Project © nacyot 2015 - 41

Slide 42

Slide 42 text

੸੺ೠ بҳܳ ഝਊೠ Test Driven Development Set up Ruby Project © nacyot 2015 - 42

Slide 43

Slide 43 text

Guard Guard is a command line tool to easily handle events on file system modifications. Set up Ruby Project © nacyot 2015 - 43

Slide 44

Slide 44 text

bundlerী Guard ୶оೞӝ # Gemfile source "https://rubygems.org" gem "rspec" gem "guard" gem "guard-rspec" Set up Ruby Project © nacyot 2015 - 44

Slide 45

Slide 45 text

੄ઓࢿ ࢸ஖ೞӝ $ bundle install Set up Ruby Project © nacyot 2015 - 45

Slide 46

Slide 46 text

Guardfile ࢤࢿೞӝ $ bundl exec guard init 20:14:38 - INFO - Writing new Guardfile to /Users/.../Guardfile 20:14:38 - INFO - rspec guard added to Guardfile, feel free to edit it Set up Ruby Project © nacyot 2015 - 46

Slide 47

Slide 47 text

Guardfile ૒੽ ٜ݅ӝ # Guardfile guard :rspec, cmd: 'bundle exec rspec' do watch(%r{^spec/.+_spec\.rb$}) watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" } watch('spec/spec_helper.rb') { "spec" } end Set up Ruby Project © nacyot 2015 - 47

Slide 48

Slide 48 text

Test Driven Demo Set up Ruby Project © nacyot 2015 - 48

Slide 49

Slide 49 text

୭ઙ ҳઑ . ├── lib │ ├── my_awesome_ruby_project │ │ └── awesome_cat.rb │ └── my_awesome_ruby_project.rb ├── spec │ ├── my_awesome_ruby_project │ │ └── awesome_cat_spec.rb │ └── spec_helper.rb ├── .rspec ├── Gemfile ├── Gemfile.lock ├── Guardfile └── README.md Set up Ruby Project © nacyot 2015 - 49

Slide 50

Slide 50 text

୭ઙ ҳઑ(೧ࢸ) . ├── lib # ۄ੉࠳۞ܻ ௏٘ │ ├── my_awesome_ruby_project │ │ └── awesome_cat.rb │ └── my_awesome_ruby_project.rb ├── spec # పझ౟ │ ├── my_awesome_ruby_project │ │ └── awesome_cat_spec.rb │ └── spec_helper.rb # పझ౟ ҙ۲ ࢸ੿ ౵ੌ ├── .rspec # rspec ࢸ੿ ౵ੌ ├── Gemfile # ੄ઓࢿ ࢶ঱ ౵ੌ ├── Gemfile.lock # ੄ઓࢿ Ҋ੿ ౵ੌ ├── Guardfile # Guard ࢸ੿ ౵ੌ └── README.md # README(೐۽ં౟ ࢸ੿) Set up Ruby Project © nacyot 2015 - 50

Slide 51

Slide 51 text

ੌ߈੸ੋ ܖ࠺ ೐۽ં౟ ҳઑ . ├── bin/ # प೯ ౵ੌ ├── lib/ # ۄ੉࠳۞ܻ ௏٘ ├── spec/ # పझ౟ ௏٘ ├── tmp/ # ੐द ౵ੌ ├── Gemfile # Bundler ಁః૑ ࢶ঱ ౵ੌ ├── Guardfile ├── Rakefile # Rake Task ੿੄ ౵ੌ ├── LICENSE.txt # ۄ੉ࣃझ ౵ੌ └── README.md # README ౵ੌ Set up Ruby Project © nacyot 2015 - 51

Slide 52

Slide 52 text

Thank you! @nacyo_t Set up Ruby Project © nacyot 2015 - 52