0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

チャート式ruby-appendix-III(bundler)

Last updated at Posted at 2020-10-28

!Mac OS X-10.15.7 !ruby-2.7.1p83

CoCの第一歩

Convention over Configurationという標語があります.configurationというのは 設定 という意味ですが,ソフトの動作をいくらでも設定できるのはいいことですよね.ところがほとんどの場合はデフォルトのままで使いますし,そのほうがどこに何があるかを探さなくてもいいので,みんなが迷うことがありません.それなら「デフォルトのままでいんじゃね」というのがconvention( 規約 と訳されていますが,コンベンションセンターの方が私はなじんでました,意味はa way in which something is usually doneだそう)です.

それを徹底的にシステム化したのが,David Heinemeier Hansson(DHH)が開発したRuby on Railsです.CoCの触りとして,linuxの世界でのbinの掟とRailsでよくはじまるscaffolding(足場組)の感覚を紹介します.

動作のメモ

動くようになったら使えるようにしましょう.shebangというのを設定して,さらにexecutableに直します.

  • cp hello.rb hello
  • emacs hello
  • #!/usr/bin/env rubyを追加
  • セーブして
  • chmod a+x helloでexecutableにします.

置き場所を工夫すれば,とても便利です.

場所 for whom
. # very local
./bin # project
~/bin # user
gem # all users

tight bindingという考え方があります.これは,必要なファイルを出来るだけ必要な場所に近いところに置いておくことを意図しています.そうすると可搬性が増すから.

execなどの種類で整理したり,~/binなどに置いておくとそのうち爆発します.localはlocalに必要なprojectで実行できるように.さらに,チョコチョコ直すのも気兼ねなくできるようになります.ここでしか使わないから.

pathの設定

commandが多くなるとsystemが実体を探すのに時間がかかります.そこで「pathを通す」んですが,これはやりたくないconfigurationの一種.でも,仕方がないんで,覚えてください.

> emacs ~/.bashrc
  export PATH=".:~/bin:$PATH" を追加,保存
> source ~/.bashrc

これで今いるところとか,'~/bin`に置いたexecutableなcodeを動かすことができます.

fishの場合は,以下の通り.

> emacs ~/.config/fish/config.fish
  set PATH . $HOME/bin $PATH
  を追加,保存
> source ~/.config/fish/config.fish

bundler

さらに,便利なものや,いろいろな場面で使う共通のアプリはいろいろなところから使えると便利ですよね.そういう時にはgemにしちまいましょう.

> gem install bundler
> bundle gem hello_rudy -b

最初は少し質問されますが,TEST:"test-unit", CI:"github"他いくつかの質問には'y'で答えてください.あるいは

bundle gem hello_rudy -b --git --mit --test=test-unit   

これでgem作成に必要なファイルが自動生成されます.

あとは,少し修正です.

> bundle exec exe/hello_rudy

で動かないですね.

> chmod a+x exe/hello_rudy

で動くかな.

もう少し,

> emacs hello_rudy.gemspec

で怒られたところを修正します.用意できてないところは,コメントアウトしときましょう.

さらにlib/hello_rudy.rbを次のように加筆します.

require "hello_rudy/version"

module HelloRudy
  class Error < StandardError; end
  # Your code goes here...
  name = ARGV[0] || 'Rudy'
  puts "Hello #{name}."
end

そうして,動くことが確認できたら,

> rake install:local
hello_rudy 0.1.0 built to pkg/hello_rudy-0.1.0.gem.
hello_rudy (0.1.0) installed.

そうすると

> hello_rudy Rudy
Hello Rudy.

とちゃんと動くようになったでしょ?

これにはconfiguration要りません.どこに入れるかとか,それを読み込む動作とかは,gemがよしなにやってくれてます.気になるならgem envとかで調べてください.

scaffolding

bundleというコマンドでどのようにして自動作成が行われたかを少し観察してください.

> brew install tree
> tree 
.
├── CODE_OF_CONDUCT.md
├── Gemfile
├── Gemfile.lock
├── LICENSE.txt
├── README.md
├── Rakefile
├── bin
│   ├── console
│   └── setup
├── exe
│   └── hello_rudy
├── hello_rudy.gemspec
├── lib
│   ├── hello_rudy
│   │   └── version.rb
│   └── hello_rudy.rb
├── pkg
│   └── hello_rudy-0.1.0.gem
└── spec
    ├── hello_rudy_spec.rb
    └── spec_helper.rb

6 directories, 15 files

となっています.

  • どこに何を置くかを決めておく.

これがCoCの第一歩になります.名前とかも自動生成されて,作業の足場(scaffold)ができあがっていることに注目してください.あとは,指示に従って修正していく.これもTDDです.


  • source ~/git_hub/ruby_docs/chart_style_ruby/c03_bundler.org
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?