asklife

IT&Life

Month: 5月 2014

CakePHPでモバイルとPCのレイアウトを分ける手順

はじめに

CakePHPでモバイルとPCのデザインを分離していきます。

UserAgentで端末を判定

判定処理をComponentに実装します。
app/Controller/Component/MyRequestHandlerComponent.php

<?php
App::uses('RequestHandlerComponent', 'Controller/Component');

class MyRequestHandlerComponent extends RequestHandlerComponent
{
    public function isSmartPhone() {
        $ua = env('HTTP_USER_AGENT');
        return ((strpos($ua,'iPhone')!==false) || (strpos($ua,'iPod') !== false) || (strpos($ua,'Android') !== false));        
    }
}

次に、全コントローラーのインスタンスを生成する際に、スマホかどうかをチェックします。
モバイルテーマと設定してあげると、/View/Event/add.ctp ではなく /View/Themed/Mobile/Event/add.ctp となります。
app/Controller/AppController.php

App::uses('Controller', 'Controller');
App::uses('AuthComponet', 'Controller/Component');

class AppController extends Controller {
    public $components = array(
    	'Auth'=>array(),
  	'RequestHandler' => array('className' => 'MyRequestHandler')
    );
   
    public function beforeFilter() {
		$this->log('[AppController/beforeFilter()] REQUEST', 'debug');    	
		$this->Auth->allow();
		
	    if($this->RequestHandler->isSmartPhone()) {
	        $this->theme = 'Mobile';
	    }		
    }		
}

画面確認

FireMobileSimulatorというUA変更ツールがあります。

それをChromeに入れて、iPhoneやAndroidの画面で開発を進めましょう。

参考

http://weble.org/2012/04/30/ca……ery-mobile
http://www.polidog.jp/2013/07/……定する/

本を読む時間

思えば、隙間時間にインターネットばかりを見ていて、本をじっくりと読む時間が無かったなと。

パズルの隙間を埋めるようにWebニュースを見たりしてきたけど、瓶の中に小石を詰めているようなものだ。

大きな岩を瓶に詰めるには、最初に入れないと入らないよな。

じっくりと本に没頭する時間が楽しくあり、洗練される気がしている。

Ruby on Railsの自動化テスト環境構築手順

はじめに

Ruby on Railsでの自動化テスト環境を構築します。

テストDBの構築

未実行のマイグレーションを実行します。

$ rake db:migrate

いきなり怒られました。gemfile.lockのrakeのバージョンを10.3.1にしましょう。

rake aborted!
Gem::LoadError: You have already activated rake 10.3.1, but your Gemfile requires rake 10.2.2. Prepending `bundle exec` to your command may solve this.
/workspace/idns/config/boot.rb:6:in `'
/workspace/idns/config/application.rb:1:in `'
/workspace/idns/Rakefile:5:in `'
(See full trace by running task with --trace)

次に、schema.rbに基いてテストDBにを作成します。

$ rake db:test:load

test DBにテスト用のテーブルが揃っています。めっちゃ簡単ですね。

$ rails dbconsole test
SQLite version 3.7.7 2011-06-25 16:35:41
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
books              idns               schema_migrations
sqlite> 

テストデータの準備

Railsのテストでは、test/fixturesフォルダにあるフィクスチャがテスト実行時に
自動的に展開されますのでデータの準備をするだけでOKです。

$ rake db:fixtures:load

テストフレームワーク

Railsで目指せ、情熱エンジニア(7):Railsの人気テストフレームワーク6選! – @IT によると、RSpecが良さそうです。

以前、QA勉強会でDeNAさんで実践されている構成で試してみようと思います。
「RSPecとSeleniumとCapybaraで自動化テスト構成」

仕事の達成感

大変な仕事は大概終わると楽しい

この1〜2年というもの仕事でもプライベートでもプログラミング三昧です。

特にこの半年は四六時中コーディングをしています。

大変なもの程、終わると楽しくて、壁を乗り越えた先に、山を越えた時に観える景色は良いものです。

昔からイベントが好きで、無茶なことして、一気に突破するのが好きなんです。

ここ半年頑張ってきた仕事がついにサービスイン!楽しみだ。

やることは全てやったから良いGWになりそうです。

© 2017 asklife

Theme by Anders NorenUp ↑