Railsでconfig/environments/development.rbの変更内容が反映されない

Ruby on Rails チュートリアルのChapter11あたりを写経していて、標題の件でハマった。 で、ググッていたらstackoverflowで以下のトピックを発見した。

ja.stackoverflow.com

こちらのトピックを参考に以下のコマンドを実行してみたところ、変更内容が反映された。やった!

$ bundle exec spring stop
$ bundle exec spring start

springというのは、アプリケーションプリローダーというものであるらしい。あらかじめてデータや設定類を読み込み、コマンドの実行を高速化する働きをするようだ。

TwitterのAPI認証で何をアプリ側で保存するか。

ツイッターと連携したウェブアプリを5〜6年ぶりに作った。その際、どういった情報をアプリ側でDBに保存するかで少し悩んだ。昔ツイッター連携のウェブアプリを開発した際は次の項目を保存していた(うろ覚え)

アプリ側の情報
・アプリのコンシューマーキーペア

認証ユーザーの情報
・ニックネーム
・アクセストークン(とシークレット)
・email

今回は次の情報を持つようにした。

アプリ側の情報
・コンシューマーキーペア

認証ユーザーの情報
・ニックネーム
ツイッターID (id_str)

昔実装したアプリでは、アクセストークンやメールアドレスを保持していたので、それらの情報が漏洩した場合悪用されるリスクがあった。その点を踏まえて今回は、保持したくない情報はDBに記録せず、セッションで一時的に保持する仕様にした。
ちなみに、メールアドレスの取得はツイッター上でアプリ登録する際、個別に申請や設定が必要になっていた気がする。

LaravelのCSRFトークン

セッション開始時にトークン値がセッションに存在しなければ、新たにトークンを生成してセッションに保存する仕様になっている。 これは、例えばログインしたあと、明示的にトークンの更新を行わない限りはログアウトするかセッションタイムアウトするまでは ずーっと同じトークンを使い続けるという事だ。

一般的なCSRFトークンの実装がどうなのかは良くわからないけど、セッションが有効な間ずっと 同じトークンを使い続けるのは微妙な気もする。いや、トークンが頻繁に変わるのはデメリットも大きいだろうけど・・・

怪しいサイトや広告サイトの設定をまとめたhostsファイル

何気なくウェブを閲覧していると、怪しい広告やウェブサイトに出くわします。 その手の怪しいドメインをhostsレベルでブロックしたいと思っても、 怪しいドメインのリストを自分で一から調べるのは骨が折れます。 そこで私は下記サイトで配布されているhostsファイルをインポートして利用しています。

http://winhelp2002.mvps.org/hosts.htmhttp://winhelp2002.mvps.org/hosts.htm

CentOS7にmongodbをインストールする

ここ最近mongodbを使ったWebサイトを構築しました。 今回はmongodbのセットアップについての内容をまとめました。

yumでインストール

mongodb公式のyumリポジトリが公開されているのでそちらを利用します。 最初に下記ファイルを作成し、リポジトリの情報を追加します。

/etc/yum.repos.d/mongodb.repo

[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1

yumでインストールします。

$ yum install --enablerepo=mongodb mongodb-org

自動起動の設定をONに設定した上で、mongodbのサービスを起動します。

$ sudo systemctl enable mongod
$ sudo systemctl start mongod

認証設定

まず最初に管理用ユーザを追加します。

> use admin
> db.createUser(
  {
    user: "myUserAdmin",
    pwd: "password",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

※user,pwdの項目は適切な値をセットしてください。

設定ファイルを変更し、ユーザ認証をONに設定します。

/etc/mongod.conf

auth=true

サービス再起動し、ユーザ認証を有効化します。

$ sudo service mongod restart

データベースごとにユーザを追加

先ほど作成した管理ユーザでログインし、ユーザを追加するDBに移動し、createUserを実行します。 データベースを作成していない状態であれば、『use データベース名』を打ち込んだ時点でデータベースが作成されます。

$ mongo admin -u myUserAdmin -p PASSWORD 
> use test
> db.createUser(
  {
    user: "myUserAdmin",
    pwd: "password",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

ユーザ認証を行っていなくてもCLIにアクセスできるので紛らわしいですが、 認証通っていない状態であればコマンドを打ち込んでもエラーになります。

CentOS7にPHP-5.6をyumでインストール

php56インストール

IUSリポジトリを使います。

$ sudo yum install php56u php56u-pdo php56u-mbstring php56u-devel

※現時点でPHP-7.0もIUSリポジトリからインストール可能(パッケージ名は php70u)

composerインストール

$ curl -sS https://getcomposer.org/installer | php && sudo mv composer.phar /usr/local/bin/composer

CentOS7のユーザ追加とsudoの設定

サーバを契約してsshログインして最初に設定しておきたいのがユーザ追加とsudoの設定です。

ユーザ追加

# useradd -m username -G wheel
# passwd username

sudoの設定

# visudo

下記行のコメントを外す

%wheel   ALL=(ALL)   ALL

下記行を追加し、sudoの持続時間を30分にする

Defaults timestamp_timeout = 30

sudoをパスワードなしで使えるようにされている方も多いですが、個人的にパスワード入力有りに設定しています。
パスワード入力を有りに設定する代わりに、sudoを一度実行してから再度パスワードの入力を求められるまでの時間を30分に設定して対処しています。この時間の設定は自分が作業するのに都合が良い値を設定すれば良いと思います。