IT技術にまつわる実験ノート

「長編を書くより、短編を数多く完成させてください。それが上達への近道です」 by 手塚治虫

Ubuntu で Re:VIEW を使ってみる

はじめに

ここでは以下の記事を参考にして、UbuntuRe:VIEW を使ってみることにする。

 

使ってみる

gem の review をインストールする。

  • sudo gem install review

 

review のバージョンは、以下のコマンドで出力できる。

  • review version

 

雛形を生成する。

 

.re ファイルに書籍の内容を書く。

 

TeX Liveのパッケージ一式をインストールする。私の環境では、容量が1Gほど必要になった。

  • sudo apt install texlive-lang-japanese texlive-latex-extra texlive-latex-recommended

 

PDF で出力する。

  • rake pdf

f:id:matt-note:20190521154240p:plain

-> PDF で出力できた。

 

Re:View の使い方は、公式のWikiを参考にする。

 

クイックスタートガイドの文章をコピペしてみる。

f:id:matt-note:20190521233738p:plain

 

PDF で出力する。

  • rake pdf

 

以下のような PDF を作成できる。

f:id:matt-note:20190521233809p:plain

 

mini_magick で PDF を PNG にしてみる

はじめに

ここでは以下の記事を参考にして、mini_magick を使って PDF を PNG に変換してみることにする。

 

使ってみる

ここでは sasaeru.pdf を sasaeru.png に変換することにする。

f:id:matt-note:20190520214118p:plain

 

実行してみる。

f:id:matt-note:20190520214348p:plain

-> PDF ファイルを PNG ファイルに変換できた。

 

Rails で Thinreports を使ってみる

はじめに

前回の「Thinreports を使ってみる」に続いて、Rails で Thinreports を使ってみることにする。ここでは、以下のリポジトリを参考に作成していく。

 

アプリを作成する

 サンプル用にアプリを作成する。

 

gem をインストールする。

  • echo 'gem "thinreports-rails"' >> Gemfile
  • bundle

 

thinreports-rails の使い方は、READMD.md を参考にする。

 

scaffold で Food を作成する。

  • bin/rails g scaffold Food name:string
  • bin/rails db:migrate

 

サンプル用に、コンソールから食べ物のデータを作成する。

  • bin/rails c
  • Food.create(name: "ごはん")
  • Food.create(name: "ステーキ")

 

app/assets/reports ディレクトリを作成して、food_list.tlf を配置する。

  • mkdir app/assets/reports

f:id:matt-note:20190520140639p:plain

 

app/controllers/foods_controller.rb に private メソッドを追加する。

f:id:matt-note:20190520140937p:plain

 

app/controllers/foods_controller.rb の index アクションで定義したメソッドを呼び出す。

f:id:matt-note:20190520134357p:plain

 

app/views/foods/index.html.erb で PDF を出力するリンクを作成する。

f:id:matt-note:20190520134553p:plain

 

サーバーを起動して、localhost/foods にアクセスして、リンクをクリックする。

f:id:matt-note:20190520134745p:plain

 

food_list.pdf を作成できた。

f:id:matt-note:20190520134808p:plain

 

ThinReports を使ってみる

はじめに

ここでは以下の記事を参考にして ThinReports を使ってみることにする。

 

とりあえず使ってみる

ThinReports をインストールする。

  • gem install thinreports

 

ディレクトリを作成する。

  • mkdir thinreports_sample
  • cd thinreports_sample

 

サンプル用の .tlf ファイルをダウンロードする。

 

帳票生成用のスクリプトを作成する。

  • touch hello_world.rb

 

コードを作成する。

f:id:matt-note:20190518205700p:plain

 

コードを実行する。

  • ruby hello_world.rb

f:id:matt-note:20190518205522p:plain

-> hello_world.pdf ファイルを作成できる。

 

使い方

ThinReports を使うには .tlf ファイルを作成する必要がある。.tlf ファイルは Thinreports Editor で作成する。 Thinreports Editor は、以下のリンクからダウンロードできる。

 

Thinreports Editor では、「静的テキストツール」で静的テキストを作成して、「ブロックツール」で動的にテキストを作成できる。静的テキストはラベルのようなもので、動的テキストは、スクリプトから動的に値を設定することができる。

操作は、以下のようになる。

f:id:matt-note:20190518211728g:plain

 

あとはこれを .tlf ファイルで保存する。tlf は ThinReports Layout File の略。

f:id:matt-note:20190518212233p:plain

 

コードを作成する。

  • touch thinreports_sample.rb

f:id:matt-note:20190518213023p:plain

 

コードを実行する。

  • ruby thinreports_sample.rb

f:id:matt-note:20190518213124p:plain

-> pdf ファイルを作成できる。

 

一覧表を作ってみる

一覧表ツールを使って、一覧表を作成する。

f:id:matt-note:20190518222337g:plain

 

以下のように作成する。

f:id:matt-note:20190518222429p:plain

 

food_list.tlf という名前で保存する。

f:id:matt-note:20190518223734p:plain

 

food_list.rb を作成して、コードを記述する。

f:id:matt-note:20190518224019p:plain

 

コードを実行する。

f:id:matt-note:20190518224231p:plain

-> food_list.pdf で一覧表を作成できる。

 

Heroku で sendgrid を使ってみる

アプリを作成する

Heroku にデプロイしたいので、データベースに PostgreSQL を指定して、アプリを作成する。

  • rails new sendgrid_heroku_sample -d postgresql
  • cd sendgrid_heroku_sample/

 

データベースを作成する。

 

gem をインストールする。

  • echo 'gem "figaro"' >> Gemfile
  • echo 'gem "devise"' >> Gemfile
  • bundle

 

figaro のコマンドで初期設定をする。

  • bundle exec figaro install

 

config/application.yml で環境変数を設定する。

RAILS_MASTER_KEY は、config/master.key の値をコピペする。

f:id:matt-note:20190516175527p:plain

 

Home コントローラを作成する。

  • bin/rails g controller Home index

 

config/routes.rb で root を Home コントローラの index アクションに設定する。

f:id:matt-note:20190516182607p:plain
 

Heroku にデプロイしてみる

Heroku にログインする。

  • heroku login

 

Heroku でアプリを作成する。

アプリ名は各自でアプリ名を指定する。

  • heroku create sendgrid-heroku-sample

 

figaro のコマンドで、Heroku での環境変数を設定する。

  • figaro heroku:set -e production

f:id:matt-note:20190516180508p:plain

 

リモートリポジトリを追加する。

コマンドの引数には、先ほど作成したアプリ名を指定する。

  • heroku git:remote -a sendgrid-heroku-sample

 

コミットして Heroku に push する。

  • git add .
  • git commit -m "first commit"
  • git push heroku master

 

しばらくするとデプロイが完了する。

以下のコマンドで、ブラウザでアプリにアクセスできる。

  • heroku open

f:id:matt-note:20190516181345p:plain

-> Heroku にデプロイできた。

 

sendgrid の設定を追加する

config/environments/production.rb で sendgrid の設定を追加する。

f:id:matt-note:20190516183505p:plain

 

メイラーを作成する

ジェネレーターを使って、メイラーを作成する。

  • bin/rails g mailer UserMailer

 

app/mailers/user_mailer.rb  を作成する。

f:id:matt-note:20190516182917p:plain

 

app/views/user_mailer/welcome.html.erb を作成する。

f:id:matt-note:20190516183101p:plain

 

devise の設定をする

 

devise のコントローラをカスタマイズする。

  • bin/rails g devise:controllers users

 

config/routes.rb で devise のデフォルトのルーティングを上書きする。

f:id:matt-note:20190516183406p:plain

 

app/controllers/users/registrations_controller.rb で、ユーザー登録した後にメール送信するメソッドを呼び出す。

f:id:matt-note:20190516183720p:plain

 

ビューを設定する。

app/views/layouts/application.html.erb で登録用のリンクと、ログアウト用のリンクを作成する。

f:id:matt-note:20190516183953p:plain

 

Heroku にデプロイする

  • git add .
  • git commit -m "Add sendgrid settings"
  • git push heroku master

 

Heroku のデータベースでマイグレーションを実行する。

  • heroku run rails db:migrate

 

Heroku にアクセスする。

  • heroku open

 

自分のメールアドレスで登録すると、登録時にメールが届くようになる。

f:id:matt-note:20190516185258p:plain

 

しばらくすると、メールが届く。

f:id:matt-note:20190516185428p:plain

 

ローカルで sendgrid を使ってみる

sendgrid のアカウントを作成する

sendgrid を使うには、アカウントを作成する必要がある。登録を完了すると、翌2営業日以内に「ユーザー名」が送信されてきて、sendgrid を使えるようになる。

f:id:matt-note:20190514122619p:plain

-> 情報を入力していくと、登録完了になる。

 

アプリを作成する

ざっくりとアプリを作成する。

  • rails new sendgrid_sample
  • cd sendgrid_sample

 

gem をインストールする。

ここでは環境変数の管理で使う figaro と、認証で使う devise をインストールする。

  • echo 'gem "figaro"' >> Gemfile
  • echo 'gem "devise"' >> Gemfile
  • bundle

 

figaro で環境変数を管理する

figaro のコマンドを実行して、初期設定をする。

  • bundle exec figaro install

 

config/application.yml で環境変数の管理を行う。

ユーザー名は、登録を完了した後に sendgrid から送られてくるユーザー名を使う。

f:id:matt-note:20190514125259p:plain

 

公式のドキュメントを参考にして、config/environment.rb を設定する。

ここではローカルの8888番ポートを使うことにする。

f:id:matt-note:20190514130301p:plain

 

devise の初期設定をする

ジェネレーターを使って、devise の初期設定をする。

 

config/environments/development.rb にメールの設定を追加する。

f:id:matt-note:20190514131649p:plain

 

メイラーを作成する

ジェネレーターを使って、メイラーを作成する。

  • bin/rails g mailer UserMailer

 

app/mailers/user_mailer.rb を作成する。

ここでは、ユーザーがアプリに登録したらメールを送信することにする。

f:id:matt-note:20190516105415p:plain

 

app/views/user_mailer/welcome.html.erb を作成する。

ビューのファイル名は、メイラーのメソッド名と同じにする。

f:id:matt-note:20190516105558p:plain

 

devise のコントローラをカスタマイズする

ジェネレーターを使って、devise のコントローラをカスタマイズする。

  • bin/rails g devise:controllers users

 

config/routes.rb で devise のデフォルトのルーティングを上書きする。

f:id:matt-note:20190516110105p:plain

 

app/controllers/users/registrations_controller.rb で、ユーザー登録した後にメール送信するメソッドを呼び出す。

f:id:matt-note:20190516110224p:plain

 

登録してメールを送信する

8888番ポートを使って、サーバーを起動する。

 

サインアップ画面にアクセスする。

f:id:matt-note:20190516105813p:plain

 

自分のメールアドレスを登録すると、メールが届く。

f:id:matt-note:20190516110421p:plain

-> sendgrid を使って、Rails アプリからメール送信することができた。

 

Rails5 でモデル名を変更してみる

はじめに

ここでは以下の記事を参考にして、Rails5 でモデル名を変更してみることにする。

 

使ってみる

サンプル用のアプリを作成する。

  • rails new model_change_sample
  • cd model_change_sample

 

サンプル用に scaffold で Article モデルを作成する。

  • bin/rails g scaffold Article title:string content:text
  • bin/rails db:migrate

 

これで DB に articles テーブルを作成できた。

f:id:matt-note:20190515003049p:plain

 

Article を Post に変更する

destroy scaffold コマンドを使わずに、手作業で変更していくことにする。

モデル名を変更する時は、テーブル名を変更しておく必要がある。

マイグレーションファイルを作成する。

  • bin/rails g migration RenameArticlesToPosts

 

rename_table メソッドを使って、articles テーブルを posts テーブルに変更する。【参考:3.8 changeメソッドを使う

f:id:matt-note:20190515003547p:plain

 

マイグレーションを実行して、DB に反映させる。

 

テーブル名を確認してみる。

f:id:matt-note:20190515001602p:plain

-> テーブル名を posts に変更できた。

 
モデル名を変更する

f:id:matt-note:20190515002148p:plain

f:id:matt-note:20190515002314p:plain

 

ファイル名を変更する

f:id:matt-note:20190515002417p:plain

 

コントローラを変更する

Article で使っている部分を、まるきり Post に変更する。

f:id:matt-note:20190515003837p:plain

f:id:matt-note:20190515004201p:plain


ビューも変更する

とにかく、Article だったものを Post に変更する。

 

テストを変更する

こちらも Article だったものを Post に変更する。

f:id:matt-note:20190515004608p:plain

f:id:matt-note:20190515004731p:plain

 

まとめ

Rails でモデル名を変更するときは、テーブル名の変更を行う。その他、ファイル名と変数名を新しいモデル名に変更していく必要がある。