Ruby on Rails開発のインターン (Day 7)

こんにちは、皆さん!

今日は調子よし、そして、またメモリリークやっていくぜ!


  • トピック:
  1. Railsで多言語対応のテキストを実行
  2. en.ymlファイル内のテキストにアクセスするには
  3. 僕のマネージャーがメモリリークを発見した方法


  • 疑問:


  • 問題:
  1. ウェブサイト上でpdfを作った際にメモリリークが起きていること


  • 学習した内容:
  1. config/locales/en.ymlは英語版のウェブサイトのテキストを保管している
  2. topコマンドでLinuxにおいて、メモリの用途を確認できる


  • 今後やりたいこと:
  1. 2か国語以上のウェブサイトを作る
  2. 言語化について別で記事を書く


  • リソース:
  1. How I spent two weeks hunting a memory leak in Ruby
  2. Rails Internationalization (I18n) API — Ruby on Rails Guides


Railsで多言語対応のテキストを実行

リソース: Rails Internationalization (I18n) API — Ruby on Rails Guides

i18tというAPIがあり、これのおかげで簡単にウェブサイトを多言語化できる!


config/locales/en.ymlは主に英語版のテキストを保管し、このストラクチャーがウェブサイトの多言語化を簡単にしてくれる。例えば、他にja.ymlというファイルがあったとする。このファイルは日本語版のテキストを保管する。そうすれば簡単に英語と日本語のウェブサイトに行き来できる。
以下は一つの例、config/locales/en.yml

en:
  hello: "Hello!"

while config/locales/ja.yml

jp:
  hello: "こんにちは"

これで同じ変数に2か国語の内容が与えられた。


そしたら、やることはどっちの言語を使うか指定することだけ!
これをするためにはI18n.locales = :jaのように日本語を指定することで日本語になり、逆も同じようにできる。

en.ymlファイル内のテキストにアクセスするには

僕が思うにテキストをアクセスする一番簡単な方法は

<%= t('hello').html_safe %>

かな...
ここでは、t関数で'hello'というキーワードをインプットして、ymlファイル内の該当する部分のテキストを返してもらっている。
html_safe関数は以下のようにテキスト内にHTMLタグを入れた時にそれをちゃんとHTMLタグとして取り出すようにしている。

en:
  hello: '<p>Hello!</p>'


僕のマネージャーがメモリリークを発見した方法

僕のマネージャーがしたのはターミナルで

$ top

というコマンドをタイプして、コンピューターのメモリーの用途を確認すること
下記のは例のpdfを作成するページをリロードする前
f:id:Coding_Studio:20180714044656p:plain
それで、リロードした後は
f:id:Coding_Studio:20180714044738p:plain
見ての通り、赤くマークしたところの数字が上昇。これはメモリリークの可能性を強く表している。


この問題はおそらく今回のインターンでの一番の山場だろう(笑)

まとめ

今日は勤務時間のほとんどをメモリリークにあてちゃった。それで何かって何もわからなかった(笑)
次はもっと前進できることを祈って!


ご精読ありがとうございました。では、また次回まで✌






Day 6はこちら↓↓
programming-shop.hatenablog.com