Close icon

アトトックラボ

2019月10日30日

Railsでrescue_fromを使ってエラー処理を共通化する

Railsのコントローラクラスのrescue_fromメソッドは、例外が発生した場合に実行するメソッドを指定できます。

コントローラーで独自のエラページをエラー内容によって切り替えたり、
APIでエラーが発生した場合に処理を共通化する場合などrescue_fromメソッドを使うとスッキリします。

ということで、APIのエラー処理の共通化を考えてみます。

各APIコントローラーのスーパークラス

各APIコントローラのスーパークラスを作成し、サブクラスで発生した例外は全てここでハンドリングします。
Api::TuleApiErrorが発生した場合、Api::ApiControllerのtule_api_errorメソッドが実行されます。
下記の例ではトークンが不正な場合は、HTTPステータスを401 Unauthorized、それ以外の場合は200 OKを返しています。
HTTPステータスは、例外の内容によって適切な値を設定します。

class Api::ApiController < ActionController::API
  include ActionController::HttpAuthentication::Token::ControllerMethods

  rescue_from Api::TuleApiError, with: :tule_api_error  

  protected
  # トークン認証
  def authenticate

  ・
  ・
  ・

  end

  private
  # エラー時のレスポンスを返す
  def tule_api_error(e)
  header = {result: e.code, message: e.message}
  response = {header: header}
  status = :ok
  status = :unauthorized if e.code == Api::Result::HTTP_TOKEN_ACCESS_DENIED
  render json: response, status: status
  end

end

上記のコードでApi::Resultはエラーコードを定義しているクラスです。

2019月10日28日

EclipseでTomcatを起動するとタイムアウトになる場合の対策

EclipseTomcatを起動するとタイムアウトしてしまい起動できないときがあります。

サーバー ローカル・ホスト の Tomcat8 (Java8) は 45 秒内に始動できませんでした。サーバーがより多くの時間を必要とする場合、サーバー・エディターでタイムアウトを大きくしてください。

タイムアウトで起動に失敗する場合はTomcatの開始するまでのタイムアウト時間を長く設定します。
デフォルトで45秒になっているのでこの値を増やします。

2019月10日17日

CentOS 7にMySQLをインストール

CentOS 7にMySQLをインストールします。
さくらVPS 設定マニュアルを参考にMySQLのインストールを進めます。

環境

CentOS 7.7.1908
MySQL 5.7.x

rootで作業を進めます。

1. MariaDBの削除

CentOS7ではMariaDBがインストールされているため、MySQLと競合しないようにMariaDBとデータベースの削除が必要です。

# yum remove -y mariadb-libs
# rm -rf /var/lib/mysql

2019月10日17日

さくらのVPS CentOS 7でファイアーウォールの設定

パケットフィルタの設定

さくらのVPSのコントロールパネルでパケットフィルタの設定を確認すると、パケットフィルタの利用設定が利用する、接続可能ポートにSSH(22)が設定されています。

パケットフィルタの設定

ファイアウォールの設定はサーバー側で行うので、パケットフィルタの利用設定は利用しないに設定します。

パケットフィルタの設定

このあと、さくらのVPS - コントロールパネルでコンソールを起動しファイアウォールの設定を進めます。

2019月10日17日

さくらのVPSでCentOS 7にnginxをインストール

さくらのVPSでCentOS 7にyumでnginxをインストールします。
リポジトリの設定インストール方法については 公式サイトに記載されているので公式サイトの手順を参考に進めてみます。

事前準備

yumのユーティリティをインストールします。

$ sudo yum install yum-utils

yum リポジトリの設定にnginxを追加

/etc/yum.repos.d/nginx.repoを作成しリポジトリの設定を追加します。

$ sudo vi /etc/yum.repos.d/nginx.repo

公式サイトでと同様にnginx.repoに下記の設定を追加します。

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
2019月10日16日

macOS Catalinaにアップグレードしようとしたら「コンピュータにmacOSをインストールできませんでした」

macOSをMojaveからCatalinaにアップグレードしようとしたら下記のようなメッセージが表示されインストールできない状態になってしまいました。
ディスクの空き領域が少ないためアップグレードできないようです。

コンピュータにmacOSをインストールできませんでした

Macintosh HDにはインストールに必要な空き領域がありません
インストーラを終了してコンピュータを再起動してからやり直してください。

インストーエラー画面ラ終了


「再起動してからやり直してください」と表示されているので再起動ボタンから再起動しても
macOSインストーラーが起動し同じエラーになってしまいます。
Macが復旧するまでにいろいろ試したことを書き残しておきます。

2018月07日20日

Visual Studio Codeでruby-debug-ideを使ってデバッグ

弊社の開発メンバーは、AtomやVisual Studio Code、Emacsなどそれぞれが好きなエディタを使用してRailsのアプリ開発を行なっています。

私は以前はAtomを使っていましたが、Atomにプラグインを入れすぎたからか重くなったので
ここ1年くらいはVisual Studio Codeを使っています。
Railsのデバッグはpryです。

Visual Studio Codeを使っていると右側にDebuggingアイコンが表示されています。
今まであまり気にしていなかったのですが
これ、どうやって使うんだと思い使ってみました。

2018月06日28日

Let's EncryptのSSL証明書を使ってみた

Let's Encryptについて

Let's Encryptは2016年4月に正式に開始された認証局で、無料で利用できるSSL証明書を提供しています。
Let's Encryptのコマンドライン、certbotを使用するとSSL証明書の取得や更新が行え自動化できるようになります。

環境

  • サーバー : さくらのVPS(CentOS7)
  • Webサーバ:nginx

Let's Encryptで取得したSSL証明書を開発用のサーバーにインストールしてみます。

2018月06日22日

.gitignoreのテンプレートを利用する

新しくプロジェクトを開始しgitでソースを管理する場合は.gitignoreを作成しますが、
githaubからgitignoreのテンプレートを取得すると便利です。

https://github.com/github/gitignore

2018月06日20日

Dialogflowでチャットボットを作ってみた

GoogleのDialogflowで簡単なチャットボットを作成ししたみたので手順などご紹介します。
今回は、Dialogflowでチャットボットを作成しAction on GoogleのSimulatorで実行してみました。

Agentを作成

最初にDialogflowのページからAgentを作成します。

Agentを作成


アトトックラボとは

株式会社アトトックメンバー が技術の話、デザインの話、キャラクターの話、ときどき脱線してガジェットの話やライフハックの話など好きなことを書いています。


連載記事


最近の記事


タグ