RubyMineでデバッガが起動しない

ふつーに「Run」メニューから「Debug Development:プロジェクト名」のメニューからデバッグモードで起動したり、ブレークポイントソースコードの左端に設定したり、Debuggerビューで変数内容を一覧で確認したりと・・・自社の開発ではやってます。


今回、外部のソースコードを見る機会があり、とりあえずいつものようにRubyMineで見てみようと思ったところ、デバッガが起動しない。エラーを無視して起動しても、DebuggerのFramesやVariablesが表示されない状態になってしまいました。(エラーは無視したら出なくなってしまいましたw 捕捉しておらず示せません>_<、)


どうも、今回見ているのソースの開発環境では、デバッガにpry-debuggerを利用しており、IDEとしてRubyMineは利用していない模様。Vim派っぽい。ということで、このあたりが原因ではないかと調べてみると、それっぽいポストがあったので参考にしてごちゃごちゃやってみました。そしたらあっさり解決した。
参考:Qiita|RubyMineでdebbugできない


とりあえずここでは、解決策としてやってみたことを列挙します。
原因とかは深く考えてないので、同じような症状になった人は試してみるのも良いでしょう。(あっさり解決するかも)


1.pryのgemをinstall

gem install pry
gem install pry-rails
gem install pry-doc
gem install pry-remote


2.ソースコードのgemfileをいじる

gem 'pry-debugger' をコメントアウト
# gem 'pry-debugger'

これを実施して、RunからDebugで起動したらいつも通り動きました。
参考にしたリンク先のように、どうもpry-debuggerと関連して何か不都合があるのでしょう。



考察なくてすみませんw


とりあえず、ウチはこれで解決しました!
マジ便利になった。debugger無しとかツライ。

実行時にRakeのバージョンを指定する

インストールされているRakeは最新で、プロジェクトで指定しているRakeのバージョンが最新ではない場合、下記のようなエラーが出る。

rake aborted!
Gem::LoadError: You have already activated rake 10.3.2, but your Gemfile requires rake 10.1.0. Using bundle exec may solve this.

このような場合、Rakeのバージョンを指定して実行したい。


バージョンの指定は、『 _10.1.0_ 』のように記述する。
そういうことで、こんな感じで指定できる。

rake _10.1.0_ app:init

RubyMineでこれをやりたかったんだけど、どうもできないようだ・・・

Windows7のDocuments and Settings 以下にアクセスできない件

Windows7のDocuments and Settings 以下には、初期設定ではアクセスできないようになっています。
こんな感じで。




通常ならアクセスする必要は無いのですが、どうしても・・・ということありますよね。Application Dataとか。
初期設定がどうなっているかと、その際に変更する必要のある設定を記載します。


※アクセスが推奨されないフォルダ階層です。自己責任で作業してください。




アクセス可能にするために必要な作業は、大きくは1つです。それは、フォルダへのアクセス権を設定することです。アクセス権を設定するためには、Administrator権限(もしくは権限を持つグループへの所属)が必要です。(細かい話、もう少しゆるい権限でもいいかも。いちいち設定してないと思うのでAdministratorで。)




初期設定

初期設定でのアクセス権限はこんな感じになってます。


表示されているすべてのユーザ(グループ)で、変更・読み取りなどのアクセス権が与えられていません。
これを、任意のユーザでアクセスできる設定に変える必要があります。
その設定例を示します。


設定例

通常のフォルダアクセス権限設定であれば、アクセス許可を変更するには [編集] をクリックしますが、それだとうまくいきません。しかも変な動きをして所有者がSYSTEMに変わってしまったりします。その場合、色々設定不可能な状態になります。間違っていじってしまった場合は所有者をAdministratorsに変更すれば変更権限が戻ってきます。



ということで、[編集]ではなく、[詳細設定]をクリックします。




Documents and Settings にアクセスできないようにしている設定は、『拒否:Everyone』の部分です。これを削除します。すると、他の『許可』設定が有効になるので、アクセスできるようになります。Administratorsなどに権限を与える設定を同時に行いましょう。


不要なユーザにまでアクセス権を与える必要はないので、適宜設定して適切な権限に保ちましょう。




※アクセスが推奨されないフォルダ階層です。自己責任で作業してください。

Excelのウィンドウが2個とか3個とか開く怪

すっごいしょうもないネタなんですけど、でもたぶん、これにかかると???ってなると思うんですよ。


なので、
何が起きてるか、そしてどう解決したらいいか
をメモしておきます。


まず、何を言っているか、というと、
Excelファイルを開いたとき(ダブルクリックでも右クリック「開く」でもなんでも)
同じ名前のExcelブックが2個開かれる、ということが起きます。
しかも丁寧に1とか2とか書いてある。


私の手元で起きたのではなく、
「なんかExcel開くと2個あがってきちゃうんだけど・・・」
と聞かれたのが発端でした。


確かに、2個開くな・・・と。



調べてみると、単純な話でした。


Excelの[表示]メニューに、[新しいウィンドウを開く]というボタンがあります。

これを押すと、

こうなります。


この状態で保存して、「あれ、なんか2個あがってるわ。」という感じで2個とも閉じますが、この「新しいウィンドウを開いた状態」というのも保存されていて、次回開いたときに、
「なんかExcel開くと2個あがってきちゃうんだけど・・・」
となります。


ですので、
余計な2〜Nまでを閉じた状態で保存していただければ、この問題は解決します。


それだけ。でも分からないと結構困る。地味なネタでした。

ローカル環境でlocalStorage IEでは動かない

サーバ無しでローカル環境(WindowsだったらローカルのC:\・・・のファイルとか)で動かせるページを作る必要があって、HTML5Web Storage(localStorage)を利用した。


はじめChromeで確認しながら作っていたところ、問題なく動作した。(Chrome34)
その後、もしや・・・と思ってIEで動作確認したら動かなかったのでメモ。(IE11)
一応Firefoxでも確認したが、Firefoxは動いた。(Firefox29)


IEでも、ローカルではなく、サーバにアップして動作させるなら動くらしい。対応していないわけではないようだ。
確認がめんどくさいですね。。。
ユーザはIEでしか動かせない(Chromeってなんですか的な)可能性があるので、今回ちょっと困るけど・・・



コードはこんな感じ。他にも書き方があるみたいだけど、一番単純なもの。

//格納
function writeLocalStorage(a, b) {
localStorage.setItem("a", a);
localStorage.setItem("b", b);

//参照
function readLocalStorage() {
localStorage.getItem("a");
localStorage.getItem("b");
}

現在日時表示処理も作ったのでついでに。

function writeDate() {
tmpD = new Date();
 
tmpYear = tmpD.getFullYear();
tmpMonth = ('0' + (tmpD.getMonth() + 1)).slice(-2);
tmpDate = ('0' + tmpD.getDate()).slice(-2);
tmpHours = ('0' + tmpD.getHours()).slice(-2);
tmpMinutes = ('0' + tmpD.getMinutes()).slice(-2);
tmpSeconds = ('0' + tmpD.getSeconds()).slice(-2);
 
outDate1 = tmpYear + "/" + tmpMonth + "/" + tmpDate + "/";
outDate2 = tmpHours + ":" + tmpMinutes + ":" + tmpSeconds;
outDate = outDate1 + " " + outDate2;
document.write( outDate );
}


「yyyy/mm/dd HH:MM:SS」で表示される。

Mac OS X の Bootcamp に Windows7 をインストールする

結構前ですが、XPのサポートが切れるので、Windows7に移行しました。
いくつかハマったのでメモを残しておきます。


大きくハマったのは2点。

  1. BootcampアシスタントでXPのパーティションMac OSパーティションに統合されない。
  2. Windows7で、Bootcampツール(右下の◆)がちゃんと動かない。


手元のMacは結構古く、MacBookProのMid-2009です。。。




いくつかやり方があると思うのですが、最終的にうまくいった手順だけ残します。


1.Bootcampアシスタントで、XPのパーティションMac OS 拡張(ジャーナリング)フォーマットのパーティションに統合する。
はい、失敗しました。パーティションとしては消えましたが、見えない領域、という状態になってしまいました。


2.ディスクユーティリティで、見えない領域をMS-DOS(FAT32)でフォーマットする。
ディスクユーティリティは[アプリケーション]->[ユーティリティ]あたりにあります。Bootcampアシスタントと同じ階層です。

強制的にフォーマットします。MAC OSパーティションに統合しません。


3.Bootcampツールをダウンロードして、USBメモリかCD-Rなどに焼いておく。
これをやっておいて、Windows側にツールをインストールしないと、ネットにつなげないという記載がありました。Windows7を設定した感じ、なんかそうでもなさそうに見えましたが・・・。
あと、これはWindows7をインストールしてから気づいたのですが、Windows7からMacの方のHDD領域にアクセスできるようになっていたので、そちらに置いておいても良いかもしれません。
今回は念のためCD-Rに焼いておきました。


4.Windows7のインストールディスクを挿入する。


5.[環境設定]->[起動ディスク]から、Windows7のインストールディスクを指定して再起動する。

やっとインストールが始まります。


6.Windows7用のパーティションにインストールしようとすると、なんか怒られる。
その場で再フォーマットしてインストールを続行する。
再フォーマットすると、Windows7用にラベルを付けたパーティションの名前も消えてしまうので、パーティションNo.を忘れないよう覚えておく。


7.インストールを進める。
特に問題なかった。


8.Windows7にログイン後、CD-RからBootcampツールをインストールする。
これがうまく動作しない・・・。
原因はツールのインストール失敗。RARの解凍ができなかったファイルがありました。
CD-R焼いたときに失敗してたのかも。Windows7から再ダウンロードして、再インストールを実施。


9.移行完了!


だいたいこういうのって、ハマりますよね・・・。


余談:
OS X 側に入り直してWindowsパーティションを見てみると、NTFSになってました。Windowsインストール時にフォーマットした時に変わったのかな。これだとMacからはReadOnlyですね。

複数Herokuアカウントの管理

1つの端末から複数のHerokuアカウントを管理する場合の方法。
異なるSSHキー(公開鍵)で管理する必要があるため、端末内で複数のSSHキー(id_rsa.pubの方)を管理する必要がある。


また、複数の端末で1つのHerokuアカウントを管理する方法。
それぞれ異なるSSHキー(公開鍵)を登録しておく必要がある。

Macでやってます。


このための方法はいくつかあるようだが、今回適用した方法をメモする。



1つの端末から複数のHerokuアカウントを管理する

Herokuのプラグインddollar/heroku-accountsを使います。


公開鍵作成
アカウントごとに公開鍵を変える必要があるようなので、まずは2つめのアカウント用に鍵を作成する。既存の鍵とは分けて作成する必要があるので、「-f」オプションでファイル名を指定する。(「-C」はコメント)

$ ssh-keygen -C COMMENT -f ~/.ssh/id_rsa.secondAccount


Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ~/.ssh/id_rsa.secondAccount
Your public key has been saved in ~/.ssh/id_rsa.secondAccount.pub.
The key fingerprint is:
xx:yy:zz:xx:yy:zz:xx:yy:zz:xx:yy:zz:xx:yy:zz:xx secondAccount

キーを作成するパスフレーズの入力を求められるが、そのままEnterで空欄も可。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

これで
~/.ssh/ に「id_rsa.secondAccount」と「id_rsa.secondAccount.pub」が出来ていれば作成はOK


ddollar/heroku-accountsプラグインのインストール
ターミナルから、

$ heroku plugins:install git://github.com/ddollar/heroku-accounts.git


Installing heroku-accounts... done


アカウント登録
ターミナルから、

$ heroku accounts:add account002


Enter your Heroku credentials.
Email: xxx@mail002.com
Password (typing will be hidden):

Add the following to your ~/.ssh/config



Host heroku.account002
HostName heroku.com
IdentityFile /PATH/TO/PRIVATE/KEY
IdentitiesOnly yes

この部分は、あらかじめHerokuで登録しておいたメアドとパスワードを入力する。

Email: xxx@mail002.com
Password (typing will be hidden):

複数鍵の登録
複数の鍵を利用する場合は、下記のファイルを作成する必要がある。


「~/.ssh/config」


複数鍵を管理するために利用するファイルになる。無ければ作成する。
このファイルに、先ほどの下記出力をコピペする。
IdentityFileについては、秘密鍵の方のパスを記載する(pubの付いてない方)

Host heroku.account002
HostName heroku.com
IdentityFile ~/.ssh/id_rsa.secondAccount
IdentitiesOnly yes

既存のアカウントと鍵が存在する場合は、「heroku accounts:add」コマンドを実行して、鍵は新たに作らない。
たとえば、

heroku accounts:add account001

同様に既存の秘密鍵を指定するように記載を追加する。こんな感じで。(既存秘密鍵ファイルがid_rsaの場合)

Host heroku.account001
HostName heroku.com
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes


登録したHerokuアカウントの情報は「~/.heroku/accounts」に記録されてます。


これで複数アカウントを管理することができます。



アクセスしてみる
複数登録したアカウントでアクセスしてみましょう。
色々コマンドはあるのですが、とりま、最低限のものだけ。詳しくはddollar/heroku-accountsにあるコマンドの説明を確認してください。

利用するアカウントを設定

$ heroku accounts:set account002

これを「set」した時点で、「heroku login account002」のログインが完了しています。
便利!!


現在ログインしているアカウントを確認

$ git config heroku.account

変なpushとかしないように、現在アカウントの確認を怠らないようにしましょう。



git remoteの追加
gitでpushする先を登録する。
リモート先URLには、Herokuのappsでcreateしたアプリのinfoに書いてあるGit URLを指定する。

git remote add [リモートネーム:任意] [リモート先URL]


複数の端末から1つのHerokuアカウントへアクセスする
HerokuアカウントへSSH公開鍵を登録
HerokuのAccount管理(右上の忍者マーク)にて、「SSH Keys」に、「~/.ssh/」にある追加したいSSH公開鍵「id_rsa.xxx.pub」の内容をコピーしてAdd Keysする。


Git HubアカウントへSSH公開鍵を登録
Heroku同様に、アカウントのSettingsにて「SSH Keys」にHerokuに追加したキーと同様の内容を追加する。



利用したいアカウントに切り替えるために下記コマンドを打つだけで、基本的にはgitコマンドの使い方、Herokuコマンドの使い方は変わりません。

$ heroku accounts:set [利用したいアカウント名]


基本的には、というのは、1つのアプリケーションを複数のHeroku環境にpushして管理する場合などは、コマンドに応じて「--app [アプリ名]」のオプションを最後に付けてください。たとえば、

heroku logs --app app001
heroku run db:migrate --app app002

などです。



何か忘れてるかもしれないですが・・・
こんな感じでHerokuの2つめのアカウントにpushできました。
*メモなので画像とか一切ないです。すみません。