レサパンって平和の象徴ですよね

生まれ変わったら中東の石油王になる予定ですよね

PHP/Idiorm + Paris を用いて同一プロジェクト内で複数DBに接続 (and Using Namespace)

Idiorm + Paris を使って、同一プロジェクト内で複数のDBに接続し、なおかつ名前空間によって各機能をパッケージング。
ちょっと詰まったのでメモ。

<?php

namespace MyNamespace;

require_once '/path/to/BaseWrapperModel.class.php';

# データベース設定
\ORM::configure('mysql:host='.DB_HOST.';dbname='.DB_NAME, null, 'connection_name');
\ORM::configure('username', DB_USER, 'connection_name');
\ORM::configure('password', DB_PASSWORD, 'connection_name');
\ORM::configure('driver_options', [ \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', ], 'connection_name');

\Model::$short_table_names = true;

class Base extends \BaseWrapperModel {
  
}


以下のメソッドの引数がキモらしく、

\ORM::configure('mysql:host='.DB_HOST.';dbname='.DB_NAME, null, 'connection_name');

connection_name に任意の接続名を指定してあげて、なおかつ第3引数がないとダメだったようです。


また、has_many を指定する際も同様に第3引数に何かしら渡してあげる必要がありました。

$this->has_many('MyNamespace\Hoge', 'fuga_id', null, 'connection_name');


PHP の Namespace の仕様も勉強できたし、詰まったけどタメにはなりましたとさ。

WordPressのプロジェクト移行時、DB情報はあってるはずなのに「データベース接続確立エラー」

AWS の EC2/RDS 上に載っている WordPress プロジェクトの移行 (厳密には複製?) 時、{PROJECT_ROOT}/*-config.php に設定したDB情報はあっているのに、アクセスすると「データベース接続確立エラー」が出てしまってだいぶハマりました。

以下の記事を参考に解決。

memories.zal.jp

Unicornってなんじゃらほい

前任者が退職してしまって、誰も構成の把握ができていない Ruby on Rails のプロジェクトを引き継ぎました。 (ちなみに この時点で私も入社数週目 😭)

どういう構成で動いてるか調べるために ~/.bash_history をあさってみると、service コマンド経由で Unicorn というサーバウェアを起動/停止してました。

post.simplie.jp

しばらくは右に倣えで service unicorn (re)start/stop してた・・・のですが、たまに挙動が怪しい時があったのでプロセスを見てみると unicorn プロセスが 2~3 生き残っていることが・・・。

どうやら unicorn はうまいことプロセスが死なないことがあるらしい・・・。

kray.jp



とりあえずスピード勝負の案件だったので、git pull と サーバのリスタートを丸っと行う、自作の作業用 BASHunicorn のプロセスを kill する処理を追加するという荒業でひとまず解決 (?)

Unicorn 入門の道は続く・・・。

vagrant up/reload で「scp.rb:nnn:in `await_response_state' ... (RuntimeError)」エラー

ミドルウェア (Node/Gullp) のインストール BASH の作成中、Vagrant がうまく起動しない & Synced Folder の同期が取れなくなってしまったので備忘録。

ホストマシンは MacOS Sierra。ゲストの仮想マシンCentOS、主なエラー内容はタイトルの通り。


原因は以下の記事と同じで、私の場合は ~/.bashrc に記載した Node のバージョンを指定するコマンドの標準出力を拾って止まってしまったようです。

記載するファイルを ~/.bash_profile に変えて、念のため出力を捨てるようにしたらエラー吐かなくなりましたとさ。

blog.freedom-man.com

ES6のClassブロックって直下にPrivateなメンバを定義できないんかい

ES6のClass構文ってPrivateなプロパティ/メソッドをClassのブロック内に直接定義できないんですね。

class Test {
  var privateProperty;   // これだと Syntax Error
  let privateProperty;   // これでも (ry
  const privateProperty; // これも (怒)
}


... Class構文、全然便利じゃないじゃないか。

const/letは便利なので、Classチックなとこだけはこれからもしばらくは今までのやり方で書くことにします。

var SubClass = function() {
  var SUPER = new BaseClass();
  var Entity = function() {
    const self = this;
    const privateMethod = function() { return; };
    self.publicMethod   = function() { return; };
    return self;
  };
  Entity.prototype = SUPER;
  return new Entity();
};
var subClass = new SubClass();

vagrant up/reload で「すでにそのIPアドレス使われてるよ」エラー

ミドルウェアのインストール BASH の作成中、まっさらな状態で試験しようと思って何も考えずに何度か Vagrant から box remove / box add したりしてたら、いつの間にかネットワークインターフェイス?の起動に失敗するようになっちまいました。

ちょっとつまずいたので備忘録として。

ホストマシンは MacOS Sierra。ゲストの仮想マシンCentOS です。

 

エラー内容は以下の通り。

 

The following SSH command responded with a non-zero exit status.

Vagrant assumes that this means the command failed!

/sbin/ifdown 'eth1'
mv -f '/tmp/vagrant-network-entry-eth1-nnnnnnnnnn-n' '/etc/sysconfig/network-scripts/ifcfg-eth1'
/sbin/ifup 'eth1'

Stdout from the command:

Determining if ip address 192.168.33.10 is already in use for device eth1...
Error, some other host (nn:nn:nn:nn:nn:nn) already uses address 192.168.33.10.


Stderr from the command:

 

 

「 すでに 192.168.33.10 は使われてるよ」てな具合。

 

vagrant ssh でゲストマシンの中に入って /etc/sysconfig/network-scripts/ifcfg-eth1 の中身と名前を eth2 にしたりする無駄なあがきをしてみたけどだめ (誰かが動的に吐き出してるっぽい。復活する)


ホストマシン上から VBoxManage list vms してみると生ける屍系仮想マシンが何匹か生き残っていたので、こちらを参考に該当の屍プロセスを成仏してから vagrant destroy。

l-w-i.net

改めて vagrant up してみると元気よく動き出しましたとさ。