Turnipによる受け入れ試験中に、Rails.envをtestではないのもの(standalone)に変更する方法 (その1) #RubyJP
smalruby-editorの受け入れ試験はTurnipで実装
開発中のWebベースのテキストエディタ smalruby-editor では、ローカルマシンで smalruby-editor
コマンドを実行すると、Webベースのエディタを起動できる standalone
モードというのを提供しています。これは、 Rails.env
を standalone
に設定して、いくつかの環境変数の設定と、ホームディレクトリにログなどのファイルを書き込むように設定してからRailsのサーバ( rails server
コマンドで起動するやつ) を起動することで実現しています。
standalone
モードのときには作成したプログラムをローカルマシンに直接保存する機能を提供する予定なのですが、この機能の受け入れ試験 (spec/acceptance/
以下の feature
) の実装が難しくて困っています。
smalruby-editor の受け入れ試験は Turnip を使って記述しています。
特定のシナリオのRails.envを切り替える
feature
の途中で standalone
モードに切り替えるためには Rails.env = 'standalone'
を実行する必要があります。これは、 spec/spec_helper.rb
に以下の記述をして、当該 feature
のシナリオに @standalone
タグを付与することで実現できました。
config.before(standalone: true) do @_rails_env = Rails.env Rails.env = ENV['RAILS_ENV'] = 'standalone' end config.after(standalone: true) do Rails.env = ENV['RAILS_ENV'] = @_rails_env end
でも、これだけではダメでした。
求む、任意のタイミングで*.js.coffee.erbを再コンパイルする方法
どのようにダメかというと、smalruby-editor では、 app/assets/javascripts/editor.js.coffee.erb
の中で、 <% if Rails.env == 'standalone' %>
といった ERB
での条件分岐を行っています。いくつかの動作確認の結果から、 feature
の処理中に app/assets/javascripts/editor.js.coffee.erb
は一度しかコンパイルされないため、最初にコンパイルしたときの Rails.env
(test か standalone のどちらか) のものを使い続けることがわかりました。 (ruby 2.0.0-p353
、rails 4.0.2
)
私としては、@standalone
タグを付与したシナリオがあれば再コンパイルをさせたいのですが、その方法がわかっていません。
PhantomJS
がキャッシュしているのかもしれませんし、Rails
がキャッシュしているのかもしれません。なかなか難しいです。
もう少し調べてみて実現が難しそうだったら別の方法を考えることにしようと思います。別の方法とは standalone
モードかどうかの条件分岐を *.js.coffee.erb
で行うことはやめて、 *.html.erb
で行うというものです。
でも、app/assets/javascripts/editor.js.coffee.erb
を任意のタイミングで再コンパイルする方法を知っておくのも面白そうなので、もう少し調べてみようと思います( ̄▽ ̄)
Surface Pro/Windows 8.1から、Surface Pro 2/Windows 8.1へのデータの移行。 #SurfaceJP
ついにSurface Pro 2を手に入れたのですが、Surface Pro/Windows 8.1からデータを移行する手段がないことを知りました orz
Windows 8→Windows 8.1はデータを転送できるのですが、Windows 8.1→Windows 8.1はできないとのこと。う~ん、いまだにファイルの転送をユーザに強いるなんてありえないと思いつつも、愚痴を言っててもしょうがありません、やるしかないです。
クラウド(SkyDrive)経由は、遅すぎるのと、ファイルのバイト列以外の情報(権限とか)が消えてしまうので別の方法にします。
そこで、いったんMicro SDにファイルをコピーすることにしました。
また、Cygwinの操作配下のものはCygwinのtarで圧縮することにしました。これなら権限が適切に保持されるはず、と思ったら tar コマンドで展開すると mklink コマンドで作成したリンクの権限が Administrator からユーザに変わってしまうことがわかりました。なかなか難しい。それに、どうやって移行先の Surface Pro 2 で tar で圧縮したファイルを展開すればいいのでしょう(笑)Cygwinがインストールされていませんからね。困ったな~。
とりあえず、以前 Surface Pro を交換修理したときの手順書を元に手作業で移行することにしました。
以下はその作業記録です。
Emacs: gnupack 24.3-20130503
Emacsさえ動作すれば、あとはどうとでもなる。
- gnupackからemacs-24.3-20130503.exeをダウンロード・インストール。
- 展開先は「C:\」
- SkyDrive上のバックアップからdot.emacs.dなどを配置。
- 以下、管理者権限のコマンドプロンプトで実行。またSkyDrive直下のdotfilesにバックアップを格納していることが前提。
C:\Users\kouji>mklink /d .emacs.d .\SkyDrive\dotfiles\dot.emacs.d .emacs.d <<===>> .\SkyDrive\dotfiles\dot.emacs.d のシンボリック リンクが作成されました C:\Users\kouji>mklink .gitignore .\SkyDrive\dotfiles\dot.gitignore .gitignore <<===>> .\SkyDrive\dotfiles\dot.gitignore のシンボリック リンクが作成されました C:\Users\kouji>mklink .gitconfig .\SkyDrive\dotfiles\dot.gitconfig .gitconfig <<===>> .\SkyDrive\dotfiles\dot.gitconfig のシンボリック リンクが作成されました C:\Users\kouji>mklink .bashrc .\SkyDrive\dotfiles\dot.bashrc .bashrc <<===>> .\SkyDrive\dotfiles\dot.bashrc のシンボリック リンクが作成されました C:\Users\kouji>mklink .profile .\SkyDrive\dotfiles\dot.profile .profile <<===>> .\SkyDrive\dotfiles\dot.profile のシンボリック リンクが作成されました C:\Users\kouji>mklink .gemrc .\SkyDrive\dotfiles\dot.gemrc .gemrc <<===>> .\SkyDrive\dotfiles\dot.gemrc のシンボリック リンクが作成されました C:\Users\kouji>mklink .inputrc .\SkyDrive\dotfiles\dot.inputrc .inputrc <<===>> .\SkyDrive\dotfiles\dot.inputrc のシンボリック リンクが作成されました C:\Users\kouji>mklink .minttyrc .\SkyDrive\dotfiles\dot.minttyrc .minttyrc <<===>> .\SkyDrive\dotfiles\dot.minttyrc のシンボリック リンクが作成されました C:\Users\kouji>mklink .ruby-version .\SkyDrive\dotfiles\dot.ruby-version .ruby-version <<===>> .\SkyDrive\dotfiles\dot.ruby-version のシンボリック リンクが作成されました C:\Users\kouji>mklink .screenrc .\SkyDrive\dotfiles\dot.screenrc .screenrc <<===>> .\SkyDrive\dotfiles\dot.screenrc のシンボリック リンクが作成されました C:\Users\kouji>mklink .zshrc .\SkyDrive\dotfiles\dot.zshrc .zshrc <<===>> .\SkyDrive\dotfiles\dot.zshrc のシンボリック リンクが作成されました
いろいろなソフトウェア
- Windowsストアアプリのインストール
- iTunes
- 同時にQuickTimeをインストール
- 2013/12/29現在、iCloudコントロールをインストールすると休止状態から復帰しなくなることが分かったのでここではインストールしない
- OutlookにGmailのアカウントを設定
- Outlookのオプションは引き継がないようだ。Surface ProのOutlookのオプションを見ながら手作業で移行
- 7-Zip
- 7z920-x64.msi をインストール
- プリンタ Cannon MP640 のインストール
- mp68-win-mp640-1_05-ej.exe
- Skitchのインストール
- skitchsetup-2.3.0.10.exe
- Oracle VirtualBoxのインストール
- VirtualBox-4.3.2-90405-Win.exe
- Firefoxのインストール
- Google Chromeのインストール
Cygwin関連
- Surface ProのCygwinのキャッシュディレクトリC:\Users\kouji\cacheを移行
- Cygwinのパッケージのダウンロード時間を大幅に短縮できる
- Cygwin
- setup-x86_64.exe を C:\cygwin64\bin に移動
- ついでにスタートにピン止めしておく
- /etc/passwordのkoujiを以下のように修正(秘密っぽいところは伏せています)。修正後にCygwinのシェルを再起動。
(修正前) kouji:unused:1001:513:kouji takao,U-kouji-surface2\kouji,****:/home/kouji:/bin/bash (修正後) kouji:unused:1001:545:kouji takao,U-kouji-surface2\kouji,****:/cygdrive/c/Users/kouji:/bin/bash
データの移行
- ~/work以下
- 私は C:\Users\kouji/work 以下に作業環境一式を配置していますので、移行元の Surface Pro にて work 以下を
tar cpzf work.tar.gz work
で圧縮して、移行先の Surface Pro 2 にてtar xpzf work.tar.gz
で展開しました。
- 私は C:\Users\kouji/work 以下に作業環境一式を配置していますので、移行元の Surface Pro にて work 以下を
- 単純にコピーしたもの
- \tools
- \Users\kouji.VirtualBox
- \Users\kouji.bash_history
- \Users\kouji.bundle
- \Users\kouji.gem
- \Users\kouji.heroku
- \Users\kouji.lesshst
- \Users\kouji.relish
- \Users\kouji.s7
- \Users\kouji.smalruby-editor
- \Users\kouji.ssh
- \Users\kouji.subversion
- \Users\kouji.travis
- \Users\kouji.uru
- \Users\kouji\local
- \Users\kouji\VirtualBox VMs
- \Users\kouji\Music\iTunes
- \Users\kouji.sshはCygwinシェルで権限を変更
chgrp -R Users .ssh cd .ssh chmod 600 authorized_keys config id_rsa id_rsa.new known_hosts
Ruby関連
基本的に work 配下に Ruby 処理系があるため移行は完了しているので、こまごまとした設定を行う。
cd \ mklink /d Ruby \Users\kouji\work\uru\versions\ruby-2.0.0-p353-i386-mingw32\bin
- 以下、管理者権限のPowerShellで実行
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine
PowerShellの設定
- レイアウト - 画面バッファーのサイズ - 幅: 80
- レイアウト - ウィンドウのサイズ - 幅: 80
- レイアウト - ウィンドウの位置 - システム設定を使う: チェック
- 画面の色 - 画面の背景: 黒
Gitのインストール
Heroku Toolbeltのインストール
- heroku-toolbelt.exe
MySQLのインストール
- mysql-installer-community-5.6.14.0.exe
node.jsのインストール
インストール後はPower Shellを再起動させること
とりあえずはこんなところです。
Surfaceグループの紹介
我が家にも、Surface Pro 2がやってきた! #SurfaceJP
(「我が家にも、○○がやってきた!」シリーズです)
財政難から一転、さまざまな経済効果によって、我が家にもSurface Pro 2 512GBがやってきました。あらためて、ハードウェアとしては最高の出来ですね!(ただ、8才の息子からすると、MacBook Air 11インチのほうがかっこいいらしいけど...)
今回の開封の儀は動画にしました。
初期設定は簡単ですね♪困ったのはコンピュータ名くらいで、細かい設定はMicrosoftアカウント経由でSurface Proの設定をPro 2に引き継いでくれたようです。ただし、Windows 8.1にはTime Machine相当の機能はありませんので、これから地道にデータを移動する必要があります。
Surface Pro 2にはWindows 8.1がプリインストールされているため、Windows 8.1へのアップデートは必要ありません。また、恒例のWindows Updateはたったの1時間です。
「さぁ、これでSurface Pro 2が使えるぞ!」なんて、思ってはいけません(笑)
次は初期不良に当たってしまっていないかの確認です。Surface Proのときの経験から おおよそ3割はハードウェアかソフトウェアの問題がある と感じています。
私は次のようなチェックをしています。まだ途中ですが、見事、問題にぶち当たりました!!
- [確認済み]10回以上、ふっと上に持ち上げる
- Surface Proではこれだけで再起動することがあり、本体を交換してもらいました。
- [確認済み]スリープ→休止状態→復帰を繰り返す
- 問題発生!!
- 3割程度の確率で復帰せずに通常の再起動になりました。これはWindows 8.1の問題でかつ、サポートに電話すると「初期化してください」「そのようなハードウェアを接続していると保証外です」とかなんとか言われて無視されるため、後述する回避策をとります。
- [未確認]Bluetooth機器を接続、スリープ→復帰→Bluetooth機器の動作確認
- 現在ではWindows Updateによって解消されていますが、Surface Pro/Windows 8.1の初期段階では復帰後にBluetooth機器が使えませんでした。
- [未確認]Bluetooth機器を接続、スリープ→休止状態→復帰→Bluetooth機器の動作確認
- 現在ではWindows Updateによって解消されていますが、Surface Pro/Windows 8.1の初期段階では復帰後にBluetooth機器が使えませんでした。
- [未確認]Bluetooth機器を接続して10分以上動作確認
- 接続が切れることがあるようです。
- [未確認]タイプカバー2を装着して、カバーを閉じてスリープ→復帰→タイプカバー2の動作確認
- Windows Updateによって、復帰後、しばらくしないとタイプカバー2が使えないように改悪されました。このことから今後より改悪されることが予想されるためチェックしています。
- [未確認]タイプカバー2を装着して、カバーを閉じてスリープ→休止状態→復帰→タイプカバー2の動作確認
- Windows Updateによって、復帰後、しばらくしないとタイプカバー2が使えないように改悪されました。このことから今後より改悪されることが予想されるためチェックしています。
- [未確認]チャームを出したり消したりといったエッジの動作確認を行う
- タッチパネルの異常によって右上部の反応しないケースがあったとのことです。
スリープ→一定時間経過→休止状態→復帰失敗→通常再起動によってスリープ前の情報消失の回避策
私はSurface Pro 2に次の機器を接続しています。
この状態だと、スリープ→一定時間経過→休止状態→復帰失敗→通常再起動によってスリープ前の情報が消失してしまいます。 これは10回のうち3回ほど発生しました。3割の確率で正常にシャットダウンしないなんて怖すぎます。ファイルシステムが壊れてディスクが読めなくなるかもしれません。
Surface Pro 2の初期設定では、スリープ後に一定時間経過すると休止状態になります。バッテリ駆動時は60分、電源接続時は180分です。 それらの設定を変更してどちらの場合も休止状態にならないようにすればOKです。(いや、全然OKじゃないんだけど...) 休止状態にしない場合は、スリープ中もどんどんバッテリを消費していき一晩で電源が切れてしまうこともあるでしょう。寝る前には必ず電源に接続するようにしましょう。
と、ここまで書いてなんか悲しくなりました。
この事象は毎回発生するわけではないですし、Microsoft製品以外のBDドライブ、液晶モニタを接続している場合はMicrosoft(の日本法人)はユーザ側の問題だということで対応しないでしょうね。確実に再現する方法が見つかればいいのですが、それをユーザに求めるサポートってどうなのでしょうね?せめて、レドモンドに休止状態に問題がある可能性があることだけでも伝えてもらえるといいのですが...
Surfaceグループの紹介
僕のサンタは、ごうぎん起業家大賞の方からやってきたようです!
今年は、私のところにもサンタさんがやってきました! ごうぎん起業家大賞という山陰合同銀行主催のビジネスプランコンテストにおいて、私が提案したプランが最優秀賞を受賞しました。(最優秀賞といっても私を含めて4組の受賞です)
No.1 高尾 宏治 様 ぼくたちRubyプログラミング少年団! 島根県・松江市が利用促進するRubyを使ったプログラミング学習教材の開発、 プログラミング学習塾を運営。
と~ても、うれしいです!!
これまでMatsue.rbや松江市 中学生Ruby教室などの活動を続けてきたからこそ、受賞できたのではないかと思います。それらを続けてこられたのはMatsue.rbのメンバーや松江市役所の方々の協力があってこそです。みなさんに感謝します。
また、受賞して感じたのは、島根県と松江市のみなさんが、Rubyに対してとても暖かい気持ちを持っておられるということですね。あらためて、このような地域だからこそプログラミング専門の学習塾が運営できる(可能性がある)と感じました!
実際に学習塾を運営するのは2015年度~を想定しています。来年度はその準備期間として教材を開発したり受講生を募集する予定です。興味がある方はメール (kouji dot takao at gmail dot com)、Facebook、Twitterなどでご連絡いただければと思います。
よい正月が迎えられそうです!
松江Ruby会議のスタッフ募集 #RubyJP #matsuerb
松江市周辺で活動しているプログラミング言語Rubyのコミュニティ「Matsue.rb」は、2014/3/15(土)に「松江Ruby会議」を行うことを予定しております。
「松江Ruby会議」とは、Rubyに関連するエンジニアを対象としたイベントで、Rubyに関連したいろいろな講演を聞くことができます。またイベント終了後は懇親会にてエンジニア同士の交流を深めることができます。参考URL: 第1回、第2回、第3回、第4回
そこで、「松江Ruby会議」の企画・運営を手伝っていただくスタッフを募集します。 イベント当日である3月15日までの毎月1回程度の打ち合わせに参加していただける方であれば、どなたでも応募いただけます。
スタッフに応募される方は Facebook の Matsue.rbグループ で「松江Ruby会議のスタッフやります!」とコメントいただくか、または Twitter で #matsuerb ハッシュタグをつけていただき「松江Ruby会議のスタッフやります! #matsuerb」とつぶやいてください。もちろん、Matsue.rb定例会などで直接連絡いただいてもかまいません。
スタッフの具体的な役割を次に挙げます。応募の参考にしていただければと思います。
- 当日まで
- 企画への参加
- 講演者の検討
- イベントの公式ウェブサイトのデザイン
- 懇親会の手配
- イベントTシャツのデザイン
- 当日
- 会場準備
- 受付
- 司会
- レポート
- 懇親会の会計
それではよろしくお願いします。
Windows 8.1で、複数のRubyを切り替えて使いたいならuruがいいよ!(残念ながらpikはオワコンです) #RubyJP
Error when running pik in Powershell より
@devert and @chiefy I will recommend you use uru instead:
https://bitbucket.org/jonforums/uru
While it doesn't install the versions of Ruby, it works much better than Pik.
Considering I haven't had time to work on pik over the last year or so, I think will be better option.
なんと、 pik
はオワコンでしたか...。誰しも暇な時もあれば忙しいときもあり、忙しければOSSのメンテナンスはできなくなるもの。これは仕方がありませんね。
ということで、上記で紹介されている uru
に乗り換えました。
Unleash Ruby に書いてある通りにすればあっさりインストールが完了します。uru
はGO言語で実装されているのですが、ソースコードをざっと見た限り簡潔な記述ができる言語ですね。しかもWindows、Mac、Linuxのバイナリをコンパイルできるというね。すばらしい!
そりゃ、HerokuもRubyからGOにゴーサイン出しますわ。ゴーサイン。ゴー...
uruとpikの比較
せっかくなので pik
とのコマンドの比較をまとめておきます。
- uruやpik自体のインストール
- uru:
C:\tools
の作成。ダウンロード・解凍したuru_rt.exe
をそのディレクトリにコピーする。環境変数PathにC:\tools
を追加する。 - pik: インストーラ
- uru:
- Ruby処理系の登録
- uru:
uru admin add <DIR> [--tag <名前>]
- pik:
pik add <DIR>
- uru:
- Ruby処理系の一覧
- uru:
uru ls
- pik:
pik list
- uru:
- Ruby処理系の切り替え
- uru:
uru <名前>
- pik:
pik use <名前>
- uru:
- デフォルトのRuby処理系の指定
- uru: なし
- pik:
pik use <名前> --default
- Ruby処理系のインストール
- uru: なし
- pik:
pik install <名前>
。ただし、古いRubyにしか対応できていない。
uru
は PowerShell
で使えるのがいいですね。ただ、 PowerShell
の権限を変更しないといけませんが... 参考: about_Execution_Policies
「Ruby on Rails」「プログラミング初心者」のはてなグループの紹介
Ruby on Rails Ruby on Rails や、プログラミング初心者 プログラミング初心者 のはてなグループに参加してみませんか? みなさんも気軽にご参加ください!!
Windows 8.1で、Rails 4.0.1環境 (MySQL) を構築する (その2) #RubyJP
昨日の記事 の修正です。
mysql2のコンパイル済みバージョンはRuby 1.8系と1.9系のみしか提供されていません。2.0系は自前でコンパイルする必要があります。ということで、Ruby 2.0 (MinGW) で mysql2 が動かない を参考にして、DevKitをインストールしたRuby 2.0.0-p246の用意ができたら、コマンドプロンプトで以下を実行します。なお、記事に従って mysql-connector-c-noinstall-6.0.2-win32.zip
は C:\
に展開しています。
gem install mysql2 -- --with-mysql-lib="C:/mysql-connector-c-noinstall-6.0.2-win32/lib" --with-mysql-include="C:/mysql-connector-c-noinstall-6.0.2-win32/include"
以下、想定している実行結果です。
This could take a while... Successfully installed mysql2-0.3.14 1 gem installed
これでmysql2がインストールできました。 そのほかにも フリーエンジニアライフ でいろいろ紹介されているので問題になったときに作業するつもりです。
「Ruby on Rails」「プログラミング初心者」のはてなグループの紹介
Ruby on Rails Ruby on Rails や、プログラミング初心者 プログラミング初心者 のはてなグループに参加してみませんか? みなさんも気軽にご参加ください!!