1. kamohicokamo

    Posted

    kamohicokamo
Changes in title
+gemとはなんじゃその① 初心者→中級者へのSTEP13/25
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,172 @@
+#gemとはなんじゃその①
+
+##はじめに
+今回はgemです。ローカルのRailsのアップデート時にGemfileとかいじってた時に、そういえばgemってなんだろ...、Railsのライブラリ管理だよな...?となって色々誤解していることが顕になったので調べてみました。
+
+##gemとは
+gemとは**ruby**のライブラリのことです。まあだから結局railsのライブラリにもなるのだけれど、正しい認識は重要。というか「gemはrailsのライブラリ」とか言ってるとruby力がないのがバレる.....
+
+
+##gemの扱い方
+まずはターミナルでローカルにインストールされてるgemを確認してみましょう。
+`gem list`で見ることができます。
+
+```console
+
+$ gem list
+
+*** LOCAL GEMS ***
+
+actioncable (5.1.6.1, 5.1.0, 5.0.7.1, 5.0.7, 5.0.6, 5.0.2)
+actionmailer (5.1.6.1, 5.1.0, 5.0.7.1, 5.0.7, 5.0.6, 5.0.2)
+actionpack (5.1.6.1, 5.1.0, 5.0.7.1, 5.0.7, 5.0.6, 5.0.2)
+actionview (5.1.6.1, 5.1.0, 5.0.7.1, 5.0.7, 5.0.6, 5.0.2)
+activeadmin (1.2.1)
+activejob (5.1.6.1, 5.1.0, 5.0.7.1, 5.0.7, 5.0.6, 5.0.2)
+activemodel (5.1.6.1, 5.1.0, 5.0.7.1, 5.0.7, 5.0.6, 5.0.2)
+activerecord (5.1.6.1, 5.1.0, 5.0.7.1, 5.0.7, 5.0.6, 5.0.2)
+activesupport (5.1.6.1, 5.1.0, 5.0.7.1, 5.0.7, 5.0.6, 5.0.2)
+addressable (2.5.2)
+ansi (1.5.0)
+arbre (1.1.1)
+arel (8.0.0, 7.1.4)
+ast (2.4.0)
+autoprefixer-rails (8.3.0, 8.2.0)
+awesome_print (1.8.0)
+aws-sdk-core (2.11.65)
+aws-sigv4 (1.0.2)
+babel-source (5.8.35)
+babel-transpiler (0.7.0)
+bcrypt (3.1.12, 3.1.11)
+bigdecimal (1.2.8)
+bindex (0.5.0)
+~~~~~~~略〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
+```
+たくさん出てきました。次は配布されているgemを探してみましょう。せっかくなのでrails関連のgemを探します。
+`gem search -r rails`でrailsに関わるgemを探せます。
+
+```console
+$ gem search -r rails
+
+*** REMOTE GEMS ***
+
+aa-rails4 (0.6.0)
+aaronchi-jrails (0.5.1)
+aavkontakte-rails3 (0.1.9)
+ab-experiments-rails (0.0.3)
+abcjs-rails (3.0.1)
+access-granted-rails (0.1.0)
+access-watch-rails (0.0.3)
+access_policy_rails (0.0.2)
+access_watch_rails (0.1.2)
+accessible-bootstrap3-rails (0.2.4)
+account_kit_rails (0.0.0)
+accountingjs-rails (0.0.4)
+ace-rails (0.0.2)
+~~~~~~~~~~~~~~~~~~略~~~~~~~~~~~~~~~~~~~~~~~~~~
+```
+たくさん出てきました。まあでもコンソールで探すより、ブラウザ上で探したいですよね。なので探す時は下記のページかgithubから探すのが良いかと思います。
+[ruby-toolbox](https://www.ruby-toolbox.com/)
+[RubyGems.org](https://rubygems.org/gems)
+
+インストールする時は`gem install rails`などで好きなものをインストールできます。
+ですが、このインストール方法はおすすめできません。`bundler`なるもので管理するが吉です。
+
+##bundler
+`bundle install`などで使う`bundler`。こいつもgemの一つで、gemを管理するものです。
+gemを複数使っていると、依存関係が出てきます。バージョンが〜だの、あのgemがない〜だの言われるので、面倒です。
+それをbundlerで管理します。Gemfileなるものを使って管理します。
+参考にブログ作った時に使ったGemfileを見てみます。
+
+```rb
+source 'https://rubygems.org'
+
+# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
+gem 'rails', '~> 5.0.7'
+gem 'bcrypt', '3.1.11'
+gem 'will_paginate', '3.1.5'
+gem 'bootstrap-will_paginate', '1.0.0'
+gem 'carrierwave', '1.1.0'
+gem 'mini_magick', '4.7.0'
+gem 'fog', '1.40.0'
+gem 'haml-rails'
+# Use sqlite3 as the database for Active Record
+
+# Use Puma as the app server
+gem 'puma', '~> 3.0'
+# Use SCSS for stylesheets
+gem 'sass-rails', '~> 5.0'
+# Use Uglifier as compressor for JavaScript assets
+gem 'uglifier', '>= 1.3.0'
+# Use CoffeeScript for .coffee assets and views
+gem 'coffee-rails', '~> 4.2'
+# See https://github.com/rails/execjs#readme for more supported runtimes
+# gem 'therubyracer', platforms: :ruby
+
+# Use jquery as the JavaScript library
+gem 'jquery-rails'
+# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
+gem 'turbolinks', '~> 5'
+# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
+gem 'jbuilder', '~> 2.5'
+# Use Redis adapter to run Action Cable in production
+# gem 'redis', '~> 3.0'
+# Use ActiveModel has_secure_password
+# gem 'bcrypt', '~> 3.1.7'
+
+# Use Capistrano for deployment
+# gem 'capistrano-rails', group: :development
+
+group :development, :test do
+ # Call 'byebug' anywhere in the code to stop execution and get a debugger console
+ gem 'sqlite3', '1.3.13'
+ gem 'byebug', platform: :mri
+end
+
+group :development do
+ # Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
+ gem 'web-console', '>= 3.3.0'
+ gem 'listen', '~> 3.0.5'
+ # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
+ gem 'spring'
+ gem 'spring-watcher-listen', '~> 2.0.0'
+end
+
+
+group :test do
+ gem 'rails-controller-testing', '1.0.2'
+ gem 'minitest-reporters', '1.1.14'
+ gem 'guard', '2.13.0'
+ gem 'guard-minitest', '2.4.4'
+end
+
+group :production do
+ gem 'pg', '0.18.4'
+end
+
+# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
+gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
+
+```
+
+`source 'https://rubygems.org'`でホスティングサーバーを指定。
+`gem 'rails', '~> 5.0.7'` 5.0.7以上5.1未満のrailsを指定。
+`group :production do 〜〜 end` 本番環境で使うgemを指定
+
+こんな感じで使うgemを記載していく。
+Gemfileを書き終えたら、`bundle install`でGemfileに記載された通りにインストールする。
+その際、Gemfile.lockを作成する。このファイルがgemのバージョンをロックしてくれている。こいつのおかげで使用するgemのバージョンが変わらない。gemが更新されても、使用するgemのバージョンはそのままにしておいてくれる。
+Gemfile.lockを更新したい時は`bundle update`を使う。
+
+##まとめ
+なんとなくイメージできてきたところで今日は終わりにします。明日はじゃあ自分でgem作って見ようかなと思ってます。楽しそうです。楽しみです。重そうです。頑張ります。
+
+
+
+##参考にしたの
+
+Bundlerの使い方
+https://qiita.com/oshou/items/6283c2315dc7dd244aef
+
+Bundlerでgemを実用的に扱うためのまとめ
+https://qiita.com/iguchi1124/items/3c17e1275b9bee4138d7#%E7%92%B0%E5%A2%83%E3%81%94%E3%81%A8%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8Bgem%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%99%E3%82%8B