Padrinoを使用した認証プログラムの生成(64bit版)

Rubyを使用したPadrinoフレームワークには、『padrino-gen』という、便利なフォーマット生成機能があります。
今回は、その中でも『padrino-admin』を用いて、メールアドレスとパスワードを用いた認証プログラムを作成します。
Padrinoの環境構築からプログラムの完成まで1時間程度、慣れれば30分を切るスピードでプログラムの構築まで完了するため、非常に強力なツールです。

今回の説明では、Padrinoの環境は構築されているものとして、認証プログラムの生成に必要な追加環境の整備からプログラムの起動まで説明します。
また、プログラムの作成はVisual Studio Codeを使って説明するので、あらかじめ前記事を参考に、インストールすることをお勧めします。
なお、Rubyのバージョンは2.3.1を使用し、Rubyインストール先はC:\Ruby23-x64として説明をします。

1. DevKitのパスを環境変数に登録する

Windowsの環境変数PATHに、以下のパスを追加します。
C:\Ruby23-x64\devkit\bin
C:\Ruby23-x64\devkit\mingw\bin
1

2. sqlite3のインストール

2-1. ソースコードのダウンロード

https://sqlite.org/download.html
上記sqlite3の公式サイトより、sqlite-amalgamation-*******.zipをダウンロードします。
(2016年9月9日時点での最新バージョンはsqlite-amalgamation-3140100.zipになります)
2
ダウンロードしたファイルを任意の場所に解凍します。
(今回はC:\TEMP\sqlite3に展開した手順で説明します)

2-2. dllファイル、dll.aファイル、exeファイルの生成

コマンドプロンプトを立ち上げ、カレントディレクトリを先ほどソースコードを展開したフォルダにします。
その後、以下のコマンドを入力します。

x86_64-w64-mingw32-gcc -O2 -shared -o sqlite3.dll -Wl,–out-implib=libsqlite3.dll.a sqlite3.c

3

C:\TEMP\sqlite3直下に、sqlite3.dllとlibsqlite3.dll.aのファイルが生成されています。
4

続けて、以下のコマンドを入力。

x86_64-w64-mingw32-gcc -O2 -o sqlite3.exe shell.c libsqlite3.dll.a

5

C:\TEMP\sqlite3直下に、sqlite3.exeが生成されています。
6

Rubyからコマンドで実行できるよう、上記作業で生成した
sqlite3.dll・libsqlite3.dll.a・sqlite3.exeをC:\Ruby23-x64\binへコピーします。

2-3. sqlite3_native.soの作成

当作業中でmakeコマンドを使用しますが、コマンドプロンプト上ではmakeコマンドは使用できないため、msysを起動してsqlite3_native.soファイルを作成します。

管理者権限でコマンドプロンプトを立ち上げ、以下のコマンドを順番に入力。

C:\Ruby23-x64\devkit\mingw\mingw64env.cmd
C:\Ruby23-x64\devkit\msys.bat

7

msysが立ち上がりますので、msys上に以下のコマンドを入力。

gem install sqlite3 --platform=ruby -- --with-sqlite3-include=C:/TEMP/sqlite3 --with-sqlite3-lib=C:/TEMP/sqlite3

8

C:\Ruby23-x64\lib\ruby\gems\2.3.0\extensions\x64-mingw32\2.3.0\sqlite3-1.3.11\sqlite3直下にsqlite3_native.soが作成されます。
9

2-4. x64-mingw32版のsqlite3のgemインストール

コマンドプロンプトにて、以下のコマンドを実行し、x64-mingw32版のsqlite3をインストール。

gem install sqlite3

10
生成されたC:\Ruby23-x64\lib\ruby\gems\2.3.0\gems\sqlite3-1.3.11-x64-mingw32\lib\sqlite3内に新しく『2.3』のフォルダを作成し、2-3の作業で作成したsqlite3_native.soをコピーします。
これで、64bit版のRuby2.3で、sqlite3の環境が構築できます。
11

3. bcryptのインストール

コマンドプロンプトを起動し、以下のコマンドを入力してgemを入手します。

gem install bcrypt

12

続いて、以下のコマンドを順番に入力し、Makefileを作成します。

cd C:\Ruby23-x64\lib\ruby\gems\2.3.0\gems\bcrypt-3.1.11-x64-mingw32\ext\mri
ruby extconf.rb

13

makeコマンドを使用し、bcrypt_ext.soを作成します。
2-3と同じ手順にてmsysを起動した上、以下のコマンドを入力。

cd C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/bcrypt-3.1.11-x64-mingw32/ext/mri
make

14

C:\Ruby23-x64\lib\ruby\gems\2.3.0\gems\bcrypt-3.1.11-x64-mingw32\ext\mri直下に、bcrypt_ext.soファイルが生成されます。
15

C:\Ruby23-x64\lib\ruby\gems\2.3.0\gems\bcrypt-3.1.11-x64-mingw32\lib内に、『2.3』フォルダを作成し、先ほど作成したbcrypt_ext.soファイルをコピーします。
16

4. padrinoのプロジェクト作成

ここからは、前回の記事で使用した、Visual Studio Codeを用いて説明します。
Visual studio Codeを起動し、プログラムを作りたいフォルダをウインドウ内にドラック&ドロップします。
その後、統合ターミナルを起動し、以下のコマンドを入力し、Padrinoプロジェクトを作成します。

padrino g project padrino-admin -t rspec -e slim -s jquery -d activerecord

vs1

その後、bundle insallを実施します。

※bundle install時にpathを指定した場合、追加で以下の作業を実施してください。
(プロジェクトフォルダ)\(指定したパス)\ruby\2.3.0\gems\sqlite3-1.3.11-x64-mingw32\lib\sqlite3内に
『2.3』フォルダを作成し、2-(ウ)で作成したsqlite3_native.soをコピーします。

5. adminの生成

統合ターミナルのカレントディレクトリをプロジェクトフォルダに移動の上、以下のコマンドを入力します。

bundle exec padrino g admin

vs2

作成に成功すると、下記画面のように、この後の作業内容が統合ターミナル上に出ます。(非常に親切です)
その後、再度bundle installを実行します。
vs3

※bundle install時にpathを指定した場合、4.の場合と同様、追加の作業が必要です。
(4のbundle install時にpathを指定した場合も同様です)
(プロジェクトフォルダ)\(指定したパス)\ruby\2.3.0\gems\bcrypt-3.1.11-x64-mingw32\lib内に
『2.3』フォルダを作成し、3.の作業で作成したbcrypt_ext.soファイルをコピーします。

6. データベースの作成

統合ターミナルに以下のコマンドを入力し、データベースを作成します。

bundle exec rake ar:create

vs4

以下のコマンドを入力し、テーブルを生成します。

bundle exec rake ar:migrate

vs5

以下のコマンドを入力し、レコードをテーブルに反映させます。

bundle exec rake ar:seed

途中、emailとpasswordの入力を促されるため、任意のemailとパスワードを入力します。
vs6
今回は架空のemail(test@wewill.co.jp)とパスワード(test)を入力しています。

成功すると、下記のような画面が出力されます。
vs7

また、email及びpasswordを、コード上で直接指定することもできます。
padrino-admin\db\seeds.rbの以下の部分を編集します。

email     = shell.ask "Which email do you want use for logging into admin?"
password  = shell.ask "Tell me the password to use:", :echo => false

の部分を

email     = "test@wewill.co.jp"
password  = "test"

に変更します。
vs8

bundle exec rake ar:seedを実行すると、コード上で指定したemailとパスワードが自動的にレコードとして挿入され、統合ターミナル上でemailなどの入力の必要が無くなります。

7. プロジェクトの起動

統合ターミナル上に以下のコマンドを入力し、プログラムを起動します。

bundle exec padrino start

vs9

http://localhost:3000/admin/にアクセスすると、ログイン画面が出るので、先ほど設定したemailとパスワードを入力。
28

ログインに成功すると、以下の画面が表示されます。
29

これで、認証システムの構築が完了します。
早く、しかもお手軽に認証システムが作れることが分かっていただけたかと思います。
一度環境さえ作ってしまえば、10分かからずに認証システムが生成できてしまうため、非常に便利な機能となっています。

また、前回の記事のように、Gemflieにデバッグに必要なgemを追記してあげれば、下記画面のように、デバッグも容易に実施できます。
(Visual Studio Codeでのデバック方法については、前回の記事をご覧ください)
30

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA