rails+rspecでテストするファイルを指定する方法

概要

railsのテストをrspecで作成した際、毎回全部のテストを実行するのではなく、新規に作成したテストファイルのみを実行したい

方法

下記の方法でテストファイルを指定することで、指定したファイルのみのテストを実行することができる

$ bundle exec rspec spec/*/*_spec.rb

全テストを実行する場合

$ bundle exec rake spec

macのlocalで起動しているrailsモバイルサイトをスマホから確認する方法

概要

railsを使ってモバイルサイトを構築している際に、実機(スマホ)から確認する方法

方法

通常のrailsサーバー起動手順

$ bundle exec rails s

モバイルから確認する方法

$ bundle exec rails s -b <macのipアドレス>

-bオプションをつけます。
-bオプションは以下の通りです。

-b, --binding=ip                 Binds Rails to the specified ip.

$ bundle exec rails s -b 192.168.1.2

windowsでASP.NET5の開発

概要

WindowsASP.NET 5 を動かす

インストール

WindowsASP.NET 5 RC 取得ページ

get.asp.net

プロジェクト作成

VisualStudio2015でプロジェクトの新規作成から

Web - ASP.NET Web アプリケーション を選択する。

下記の画像のような選択画面が出てくるのでASP.NET5テンプレートからプロジェクトを選択する f:id:naught00:20160117224120p:plain

その後、自動でパッケージの復元が実行される。 プロジェクトのプロパティを見ると、ソリューションのDNX SDKバージョンが1.0.0-rc1-update1になっている。

f:id:naught00:20160117224709p:plain

デバッグの開始で実行することができる。

debian + ASP.net

目的

debian8(jessie) で coreclr を使ってasp.net mvc を動かす

導入手順

  1. monoインストール
  2. dnvmインストール
  3. dnxインストール
  4. libuvインストール
  5. coreclrインストール

1. mono インストール

coreclrで実行するためにmonoは必要ないが今後のことを考えてインストールしておく

naughtldy.hatenablog.jp

2. dnvm インストール

dnxバージョンマネージャー

$ sudo apt-get install unzip curl
$ curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh
$ dnvm upgrade

3. dnx インストール

アプリ向けの実行環境

$ sudo apt-get install -y libunwind8 gettext libssl-dev libcurl4-openssl-dev zlib1g libicu-dev uuid-dev

4. libuv インストール

非同期I/Oライブラリ
Node.jsで使用されている

$ sudo apt-get -y install automake libtool curl
$ curl -sSL https://github.com/libuv/libuv/archive/v1.4.2.tar.gz | sudo tar zxfv - -C /usr/local/src
$ cd /usr/local/src/libuv-1.4.2
$ sh autogen.sh
$ ./configure
$ make 
$ make install
$ rm -rf /usr/local/src/libuv-1.4.2 && cd ~/

$ sudo ldconfig

5. coreclr インストール

.Net Core ランタイム

最新バージョンのdnx(coreclr)をインストールする

$ dnvm install -u -r coreclr

mono版を入れたい場合はこちら

$ dnvm install -u

指定バージョンのdnxをインストールする
* 下記のコマンドの場合は 1.0.0-beta8 をインストールする

$ dnvm install -r coreclr 1.0.0-beta8

動作確認

動作確認用のサンプルソースの取得

$ git clone https://github.com/aspnet/Home.git

実際のプロジェクトはsamplesディレクトリ配下にある。
ここにあるディレクトリ名とインストールする coreclr のバージョンを合わせる必要がある。

1.0.0-beta8 を実行する場合は以下の手順です

dnxのインストールされている/現在使用しているバージョンの確認

$ dnvm list

表示されたものでActiveの部分に*がついているものが現在選択されているバージョンです。

  1. 該当のバージョンのcoreclrがインストールされていない場合
$ dnvm install -r coreclr 1.0.0-beta8
  1. 該当のバージョンのcoreclrがインストールされているがActiveになってない場合
$ dnvm use -r coreclr 1.0.0-beta8

プロジェクトがあるディレクトリへ移動

$ cd samples/1.0.0-beta8/HelloMvc

プロジェクトのリストアで必要な情報の取得

$ dnu restore

プロジェクトの実行

$ dnx web

dnx web の部分は project.json のcommandsによって変わる

    "commands": {
        "web": "Microsoft.AspNet.Server.Kestrel --server.urls http://*:5004"
    },

上のソースは1.0.0-beta8のproject.jsの一部を抜粋したものだが、この場合 dnx web で実行可能です。
また、アクセスurlも記載されている。
上記の場合は http://localhost:5004

debianへのmonoインストール

debianへのmonoをインストールする方法

インストールシェル

setup_mono.sh

#!/bin/bash

DOWNLOAD_PATH=/usr/local/src
MONO_VERSION=4.2.1.124
MONO_PATH=4.2.1

PREFIX=$@
if [ -z $PREFIX ]; then
  PREFIX="/usr/local/mono/$MONO_VERSION"
fi

# Ensure you have write permissions to PREFIX
mkdir -p $PREFIX

apt-get -y install git autoconf libtool libtool-bin automake build-essential mono-devel gettext bison

cd $DOWNLOAD_PATH
wget http://download.mono-project.com/sources/mono/mono-$MONO_VERSION.tar.bz2
tar xvf mono-$MONO_VERSION.tar.bz2
cd mono-$MONO_PATH
./configure  --prefix=$PREFIX
make
make install

以下に、シェルを実行してのmonoインストール方法を示す。

1. シェル実行

$ sudo setup_mono.sh

2. パスを通す

$ echo 'export PATH="$PREFIX/mono/bin:$PATH"' >> ~/.bashrc
$ echo 'export PATH="$PREFIX/mono/bin:$PATH"' >> ~/.zshrc

grapeを活用したapi設計

ruby on rails を活用してapiサーバーを作成した際の忘備録
grapeについてはgithubの情報が一番詳しいと思います。

ruby-grape/grape · GitHub

目的

  • rails と grape を使用してAPIを設計する
  • apiを1つ作る
  • apiはバージョン管理したい

構成

f:id:naught00:20151123142754p:plain

  1. appディレクトリ以下にディレクトリapiを作成
  2. apiディレクトリ以下にディレクトリv1を作成

構成としては
v1のapiは全てroot.rbに集約する。
endpoint.rbは各バージョン(今回だとv1ディレクトリ以下)のroot.rbファイルを集約する。
検索用のapiを1つ作成する。
今後、apiをアップデートした場合はディレクトリv2を作成することでapiのバージョンが管理できます。

中身

それぞれのファイルの中身

Endpoint.rb

apiを管理する

module Endpoint
  class API < Grape::API
    # APIアクセスに接頭辞を付加
    # ex) http://localhost:3000/api
    prefix "api"
    # 出力フォーマットをjsonにする
    format :json

    mount Root::V1
  end
end

api/v1/root.rb

バージョン情報とバージョン配下のapiを管理する

module Root
  class V1 < Grape::API
    # ex) http://localhost:3000/api/v1
    version 'v1', :using => :path

    mount Search::V1
  end
end

api/v1/search.rb

apiの動作を記述する
今回はSeriesというDBテーブルがあってそこから検索するという想定で作っています。

module Search
  class V1 < Grape::API
    # ex) http://localhost:3000/api/v1/search
    resource "search" do

      # apiの説明
      desc "return a series"

      # URLにパラメータを付加しない場合の記述
      # この例ではシリーズを全件返す
      get do
        Series.all
      end

      # apiの説明
      desc "return a series"

      # 引数の型を指定する
      # URLの指定の部分を string型で取得する
      params do
        requires :search_word, type: String
      end

      # :search_word で引数を取るようにする
      # http://localhost:3000/api/v1/search/kensaku_mozi
      # でアクセスすると 
      # params[:search_word] == kensaku_mozi
      # となる
      get ':search_word' do
        Series.find(params[:search_word])
      end
    end
  end
end

ここまで記述できれば最後に config/routes.rb に作成した api を mount してアクセスできるようになる

config/routes.rb

Rails.application.routes.draw do
  mount Endpoint::API => "/"
end

確認

rails server
で起動して
http://localhost:3000/api/v1/search
にアクセスすれば、jsonが取得できるようになる。

MySQLのパスワード有効期限

MySQL5.7.4から標準でパスワードに有効期限がつくようになってました。
パスワード有効期限が切れると、ログイン以外の作業ができなくなるそうなので注意が必要です。

MySQLにおけるパスワード有効期限の設定方法

パスワードの有効期限は、設定ファイル my.cnf に記述することで変えられるようです。

従来のMySQLと同様にしたい場合は

default_password_lifetime=0

default_password_lifetime には 0 ~ 65535日までの値を設定できます。

まとめ

# 365日で使えなくなる
default_password_lifetime=365

# パスワード有効期限をつけない
default_password_lifetime=0

# 設定可能な最大日数(65535日)
default_password_lifetime=65535