ionic(cordova)で複数人でチーム開発するときのながれメモ

1人でやってるときは問題なかったけど、複数人でやってるときに最初うまくいかずにハマったのでメモしておく。

新規プロジェクト作成の場合

新規にプロジェクトを作成してandroid を追加(iosはデフォルトで登録済み)

$ ionic start sampleApp blank -a "アプリ名" -i com.example.sampleApp # プロジェクト作成
$ ionic platform add android # android追加
$ ionic state save # package.jsonへ保存

gitのリモートリポジトリへPUSH

$ git push origin master

別の開発者の作業

$ git clone http://path/to/repo.git
$ ionic state reset
プラグイン追加する場合

プラグインを追加

$ ionic	platform add プラグイン名
$ ionic	state save
$ git push origin master

別の作業者

$ git pull orign master
$ git state reset

この手順でgit cloneした作業者もエラーとかでないでいけた。「ionic state reset」が必要てことですね。以上です

ionic(cordova)で本番環境、開発環境を切り替える

ionicに限った話じゃないかもしれないけど。
今回やりたかったのは、本番と開発でつなぎこむAPIのURL等を切り替えたりしたかった。

今回は少し調べて、node-env-fileというのを使った。
また、gulp-concatも使ってる。

今回は以下のようなファイル構成を想定。環境によって切り替えたい値はここで定義するイメージ。

www/js/config/development.js
www/js/config/staging.js
www/js/config/production.js

development.js

angular.module('starter.values')
  .value('config', {
    api_url: "http://example.com"
  });

こんなようなファイルを環境ごとにつくるイメージ。

インストー

$ npm install node-env-file

.env ファイルを新規で作成

# mode=production
# mode=staging
mode=development

gulpfile.jsを編集

var env = require('node-env-file');

env(__dirname + "/.env");
var conffile = "config." . process.env.mode . ".js";

gulp.task("js.concat-values", function() {
  return gulp.src(["www/js/config/" + confifile])
    .pipe(concat("config.js"))
    .pipe(gulp.dest("www/build/js"));
});

あとはwww/index.htmlで上記つくったファイルを読み込む

<script src="build/js/config.js"></script>                                                                                                                                                                         

なんかヌケがありそうだけどイメージはこんな感じ。あとで追記するかも。以上です。

ionic(cordova)で横スクロールするメニューを実装するときのメモ

cssでの実装でこちらを参考にそのままいけました。
Appleに学ぶ、横スクロールナビを組む時のCSSメモ - Qiita
Horizontal Scrollable Navigation Sample

が、ionic serveでブラウザで確認したところ問題なかったのだがビルドしてアプリとして確認したところ動かず。

<ion-contet overflow-scroll="true">
  ・・・
</ion-content>

overflow-scrollが必要でした。ionic serveでは動くのにアプリで動かないというのがよくわからなかったのですが。。。以上です

【mysql】特定のキーワードが入っているレコードでソートする方法メモ

こんなことができたのか
キーワードがあるものを上にもってくる。

select id, title from daily order by title like "%キーワード%" desc;

以上です

【cakephp】サブクエリを実行する方法メモ

サブクエリのサンプルメモ。
ついでにgroup by した結果のレコード数を求めるサンプル。

$dbo = $this->MyTable->getDataSource();
$subQuery = $dbo->buildStatement(array(
        "fields" => array("distinct MyTable.id"),
        "table" => "my_table",
        "alias" => "MyTable",
        "conditions" => array(
                "MyTable.deleted =" => 0,
        ),
        "joins" => array(
                "type" => "left",
                "table" => "other_table",
                "alias" => "OtherTable",
                "condition" => array(
                        MyTable.id = OtherTable.my_table_id,
                ),
        ),
        "group" => array(
                "MyTable.id",
        ),
));

$query = "select count(*) as cnt from ({$subQuery}) as tmp";
$result = $this->MyTable->query($query);

以上です。

【cakephp】paginateでのorderが効かなかった時の対応

また、たまにしか触らないcakephpではまった。しかもバージョン1
paginateでなぜかorderだけ効かなかった

こんな感じの基本的?なもので他では動いていたのに。。。

$this->paginate = array(
  "fields" => array(
    "Table.field1",
    "Table.field2",
    ),
  "order" => array(
    "Table.field1 asc",
    "Table.field2 desc",
  ),
  "limit" => 30,
);
$this->paginate("Table", array(
  "and" => array(
    "Table.deleted" => 0
  ),
));

原因はurlパラメータにsortという名前の含まれていたのが原因だったぽい。
http://example.com/sort:1/・・・動かない
http://example.com/sort2:1/・・・動いた

こんなことありえるのか。。。このアプリケーションの問題なのかcakephpの仕組みの問題なのか追求する気力はないのでとりあえず完了としよう。。。以上です

【ionic】ionic buildでgulpを実行する

今回やりたかったのは、ionic buildでもgulpが動くようにしたかった。

https://codepen.io/leob6/post/quick-tip-using-gulp-to-customize-the-serve-run-and-build-process-for-your-ionic-framework-apps
こちらにやり方書いてあった。

gulpfile.jsの例

gulp.task("js.concat-controllers", function() {
  return gulp.src("www/js/controllers/**/*.js")
    .pipe(concat("controllers.js"))
    .pipe(gulp.dest("www/build/js"));
});

今回はwww/js/controllers以下のファイルをwww/build/js/controller.jsに結合して出力するようにしてみた。

で、さらに以下を追加

gulp.task('build:before', ['js.concat-controllers']);

で、以下を実行するとちゃんとcontroller.jsが生成されることが確認できました。

$ ionic build

以上です。