学習記録

2020-02-09に作成

個人用の学習記録。成果がなくとも毎日更新。

所有者限定モードのためこのボードには投稿できません ボードとは?

「Bundler が Ruby 2.7 で変な件」が私の環境でも起こる件

railsコマンドを入力するたびに警告が出ていたのを放置していたので、対処してみた。

調査

下記の警告のメッセージを丸々コピペしてググる。
"the running version of Bundler (2.1.2) is older than the version that created the lockfile (2.1.4). We suggest you to upgrade to the version that created the lockfile by running"
Bundler が Ruby 2.7 で変な件が検索結果に出た。
唯一の日本語記事なので、まずこれを参考にしてみた。
記事にある事象と自分の環境を比較してみる。
$ bundle -v
Bundler version 2.1.4


$ gem list bundler
*** LOCAL GEMS ***
bundler (2.1.4, default: 2.1.2)


p Bundler::VERSION
"2.1.2"


対処

$ gem update --system 3.0.8 && gem update --system

対処後

対処したことで警告は出なくなったが、
バージョンの表示はこれで良いのか?

p Bundler::VERSION
"2.1.2"


$ gem list bundler
*** LOCAL GEMS ***
bundler (default: 2.1.4)

bundle checkで警告が出る

$ bundle check
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
The Gemfile's dependencies are satisfied

参照:bundle installする際のtzinfo-dataのwarningがウザい
「UnixベースのOSではtzinfoからシステムのタイムゾーン情報に直接アクセスできるので、このgemを入れる必要はないそう。」という言葉を鵜呑みにするなら、下記の行をコメントアウトするのみ。

gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

期待通りエラーは出なくなった。


今日調べたこと

1台のEC2でもELBを使うメリット

疑問

【初心者向け】AWSのサービスを使ってWebサーバーをHTTPS化する
を読んでいたところ、LBを設置する意図を知らない(負荷分散のイメージしかない)ことに気づいた。

検索

Google検索で「load balancer 1台しかない」とかいうキーワードを入れたところ、運よく下記の記事が候補に出た。
1台のEC2でもELBを使うメリットについてまとめてみました
ELBのありがたい点を下記にピックアップ。
- DNSの変更を行うことなく、バックエンドの切り替えが可能
- ELBのヘルスチェックを利用してWEBサーバの死活監視ができる
- SSLの管理をAWSにオフロードできる(オフロードって何だ)
- ELBを利用すればACMの無料SSL証明書が利用でき、また証明書の更新は自動で行われる。

ヘルスチェックって何

  • サーバーからのレスポンスのコードが期待通りかどうかを確認するような機能らしい。Ping Pathへのリクエストの結果で判断しているらしい。
    参考:https://norm-nois.com/blog/archives/3017
  • ヘルスチェックといってもELBとRoute 53で異なるものを指す。
    参考:https://dev.classmethod.jp/articles/health-check-spec-elb-route53/

つまずいた点

  • Rubyでは変数に全角文字を使うことができるということを知らず、バグの解決が遅れた。

Pythonでつくる対話システム

3-4-4で調べたこと

OpenNMT-pyのパラメタの説明
https://opennmt.net/OpenNMT-py/options/translate.htmla

colabで直接動かすので、コマンドライン引数でなくargparseへ直接渡したい。
Jupyter lab / notebookで argparseそのままで実行する方法

学習したモデルはGoogle Driveに置かれているので、
cliからファイルを取得させたい。
wget/curl large file from google drive


Pythonでつくる対話システム

3-4-4

learn_generative_model.ipynbに書いてある通りに動かすと、
エラー「torchtext.so: undefined symbol」で止まる。
OpenNMT-pyのinstallationに従っておけば良さそう。
参考:https://github.com/OpenNMT/OpenNMT-py#requirements


Railsチュートリアル2周目

つまずいた点

fixtureのymlファイルにインデントをつけるとエラーでテストが失敗するようになった。


Railsチュートリアル2周目。
RSpecの勉強も始めた。

【Rails】はじめてのRSpec!テストコードを書こう!

つまずいた点

事象

テストを実行したところテスト結果がREDになる。

Failures:
  1) FoodEnquete 入力項目の有無 必須入力であること お名前が必須であること
     Failure/Error: expect(new_enquete.errors[:name]).to include(I18n.t('errors.message.blank'))
       expected ["を入力してください"] to include "translation missing: ja.errors.message.blank"
     # ./spec/models/food_enquete_spec.rb:42:in `block (4 levels) in <top (required)>'

対処

下記の文を追加したところテスト結果がGREENになった。

rspec-testcode-sample/2章/config/locales/views.ja.yml

  errors:
    message:
      blank: "を入力してください"

疑問

下記のサイトを参考に対処したが、deviseとは何だろう。
自分の環境にはdeviseもrails-i18nも入っていないと思うが、どう実装されているのかわからない。
https://poinorou.hatenablog.com/entry/2019/09/16/090336


Railsチュートリアル勉強中

14.2.6 フォローをテストする

つまずいた点

演習14.2で期待したエラーが生じなかった。
原因:Guardfileの設定を忘れていた。保存するファイルによって実行するテストが違うことに気づかなかった。


Railsチュートリアル勉強中

14.2.2 統計と [Follow] フォーム

memberメソッドを使うとURLにはidが含まれる。
idを含めたくない場合、collectionメソッドを代わりに使う。

つまずいた点

下記のようにテストを書いていたが、count.to_sと書かないと期待通りにテストされない。

assert_match followers.count, response.body

Railsチュートリアル勉強中

13.4.3 画像のリサイズ
アップロードされた画像を表示する前にサイズを変更するが、
テストでは画像のリサイズを行わないようにする。

調べたこと

config/initializersディレクトリ下にはアプリ起動時に実行される。
参考:https://teratail.com/questions/63578


Railsチュートリアル勉強中

13.4.1 基本的な画像アップロード

つまずいた点

症状

リスト13/59でmicropost.rbに「mount_uploader :picture, PictureUploader」を追記し、
チュートリアル通りにテスト結果がGREENになることを期待していた。
しかし、テスト結果にエラー「NoMethodError: undefined method `picture_will_change!'」と出る。

原因

rails g migrationと入力するべきところをmigrationの部分を入力し忘れていた。
出力結果に「Could not find generator 'add_picture_to_microposts'. 」と出ていたのを確認していなかった。
参考:https://teratail.com/questions/215421


Railsチュートリアル勉強中

13.3.1 マイクロポストのアクセス制御

ログインしていない場合にマイクロポストが操作できないことをテストで確認。
Usersコントローラではlogged_in_userを使っていたが、このメソッドをMicropostsコントローラからも扱いたいのでメソッドの定義を移動させる。

つまずいた点

  • rails routesコマンドでdestroyへのパスを確認しようとしたが、現れない。原因はroutes.rbにtypoがあったから。(destroyでなくdestoryと書いていた。)

Railsチュートリアル勉強中

13.2.1 マイクロポストの描画

マイクロポストを全件表示すると件数と処理時間の面で問題がある。
10章と同様にwill_paginateメソッドを使い、ページで分割して表示する。
10章と異なる点としてwill_paginateに渡す引数がある。
Usersコントローラにおいて、@users変数が存在していれば引数は不要。
本節ではUsersコントローラにおいて、@microposts変数を明示的に渡す。


Railsチュートリアルを勉強中

11.4 本番環境でのメール送信

つまずいた点

Herokuにデプロイ後、メールが送信されることを試そうとした。
結果はエラー "Authentication failed: account disabled"
HerokuかSendgridに問い合わせると良さそうだが、この対処は後回しにする。


Railsチュートリアル勉強中

11.3.3 有効化のテストとリファクタリング

演習2の「redirect_to root_url and return unless FILL_IN」が分からなかったので下記のリンク先で勉強した。
素人による "and return unless"