ActiveScaffoldとは Railsアプリでは、CRUD操作(登録・修正・表示・削除)を 一気に作ってくれる、Scaffoldという機能があります。 が、あまり実用的ではない、という定評で、 便利な機能にもかかわらず、それほど使われていません。 そこでActiveScaffoldです。 ActiveScaffoldでは、ごく少ない操作で、 かなりそれっぽい画面を自動生成してしまいます。 使い方 gemで導入 javascriptテンプレートにrequireを書く stylesheetテンプレートにrequireを書く 生成したいエンティティを記述する routesファイルにひとこと書く 1.gemで導入 Gemfileに、以下の通り記述します。 gem install active_scaffold 関係ないですが、僕は最近、もっぱらskip_bundleオプション付きでプロジェクトを作り、 後からプロジェクト内のvendor/bundle配下にgemをインストールするのが、 全体の環境を壊さなくていいなぁとお気に入りです。 2. javascriptテンプレートにrequireを書く app/assets/javascripts/application.js を開きます。 ファイルの末尾に、requireを記述したブロックがあるので、 以下の通り追記します。 //= require active_scaffold コメントアウトした感じの見た目で構いません。 3. stylesheetテンプレートにrequireを書く app/assets/stylesheets/application.css を開きます。 ファイルの末尾に、requireを記述したブロックがあるので、 以下の通り追記します。 *= require active_scaffold これも、コメントアウトした感じの見た目で構いません。 4.生成したいエンティティを記述する エンティティを、ActiveScaffoldを使って、 モデルとコントローラとビューを一気に生成します。 例えば、以下のように記述します。 rails g active_scaffold work_kind name:string 5.routesファイルにひとこと書く 最後に、config/routesファイルに、以下のように書きます。 resources :work_kinds do as_routes end これで、Railsアプリ上では、このように表示されるはずです。 間違えるとどうなるか? ちなみに、requireの記述を間違えると、 それぞれ特有の動作をします。 stylesheetの記述をミスると、白い背景に文字だけの、 シンプルな画面になります。 javascriptの記述をミスると、リンクをクリックしても動作しなくなります。 ajaxの非同期処理が帰ってこれなくなるのでしょうか。 『新しいウィンドウで開く』などすると、別窓では表示されるようです。 ...
TimeMachineのバックアップが遅い時は、Spotlightを確認せよ
今回は、タイトルで内容を言い尽くした感があります。 今回起こったこと 約2週間前から、TimeMachineのバックアップが成功しなくなりました。 夜寝ようとすると、『バックアップ230MB/6GB』とか表示されてるわけです。 で、InsomniaTを仕掛けてスリープしないようにし、翌朝バックアップが終わったか確認すると・・・ 『バックアップ2.4GB/6GB』 とか出ているわけです。 丸一日かかる計算です。 もう仕事に持っていくし、終わんねーじゃん。 こんな事が数日続いたでしょうか・・・ Spotlightの異変 仕事中に、ふと気がついた事がありました。 Spotlightで検索できない。 ぐぐる。 OSX Daily appleのフォーラム 今回は、下のコマンドで解決できました。 sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist TimeMachineも解決したよ Spotlightが解決したら、TimeMachineのバックアップもうまくいきました。 たまった差分バックアップが9時間で終わった感じですが。 めでたし。
lazy_high_chartsを使ってみた
Lazy high chartsを使ってみた railsでグラフを表示させたくて、 Lazy high chartsを使ってみました。 やった事を書いておきます。 なんでLazy high chartsなの? Lazy high chartsを選んだ理由は、以下の通りです。 『Web グラフ』で検索したら、high chartsの評判がよかった →webアプリ(perlやjavascript)でグラフ表示なら、Highcharts で決まりかも 『ruby high charts』で検索したら、Lazy high chartsの記事を見つけた →Rails で Lazy high charts を使ってチャートを実装してみた というわけで、Lazy high chartsを使ってみます。 まずはインストール 上記のサイトを参考に、Lazy high chartsのインストールを行います。 まず、Gemfile に gem 'lazy_high_charts' を追加しました。 そして、 bundle を実行します。インストールが始まりました。 ここまでは問題ありません。 そして、 bundle exec rails g lazy_high_charts:install を実行すると、highchart.js がダウンロードされて、assets/javascripts に配置される・・・ はずでしたが、何やらエラーが表示されました。 インストールエラー エラーメッセージは、次のようなものでした。 % /projects/rails/lazy_chart% bundle exec rails g lazy_high_charts:install [WARNING] Could not load generator "generators/lazy_high_charts/install/install_generator". Error: uninitialized constant LazyHighCharts::Rails::Generators. /.rvm/gems/ruby-1.9.3-p0/gems/lazy_high_charts-1.4.0/lib/generators/lazy_high_charts/install/install_generator.rb:4:in `<module:LazyHighCharts>' /.rvm/gems/ruby-1.9.3-p0/gems/lazy_high_charts-1.4.0/lib/generators/lazy_high_charts/install/install_generator.rb:3:in `<top (required)>' /.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.13/lib/rails/generators.rb:300:in `block (2 levels) in lookup' /.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.13/lib/rails/generators.rb:296:in `each' /.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.13/lib/rails/generators.rb:296:in `block in lookup' /.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.13/lib/rails/generators.rb:295:in `each' /.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.13/lib/rails/generators.rb:295:in `lookup' /.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.13/lib/rails/generators.rb:152:in `find_by_namespace' /.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.13/lib/rails/generators.rb:169:in `invoke' /.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.13/lib/rails/commands/generate.rb:12:in `<top (required)>' /.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.13/lib/rails/commands.rb:29:in `<top (required)>' script/rails:6:in `require' script/rails:6:in `<main>' Could not find generator lazy_high_charts:install. ...
SketchUpのWebDialogの使い方
Trimble SketchUpには、rubyで自動化できる機能があります。 今日は、rubyで画面を作る、WebDialogというコンポーネントについて お話ししたいと思います。 SketchUpには、WebDialogというコンポーネントがあります。 これを使うとrubyスクリプトから、フォームを作成でき, ユーザーと対話的にスクリプトを実行できるわけです。 WebDialogの特長 htmlとCSSで、フォームを作成できる rubyスクリプトから、htmlの要素にアクセスできる html内のjavascript関数から、rubyスクリプトを実行できる rubyスクリプトから、html内のjavascript関数を実行できる WebDialogは、HTML+CSS+javascript WebDialogコンポーネントは、フォームのレイアウトをHTMLで指定します。 また、入力部品の動作はjavascriptで指定します。 基本的な使い方は、公式ヘルプに載っています。 http://www.sketchup.com/intl/en/developer/docs/ourdoc/webdialog#add_action_callback rubyスクリプトの実行方法 あらかじめ、ダイアログに、コールバックメソッドを指定しておく必要があります。 指定されたコールバックメソッドには、仮想urlが割り当てられており、 “skp:” + コールバックメソッド名のアドレスに遷移しようとすると、 コールバックメソッドが実行されます。 仮想urlへ遷移するには、以下のいずれかの方法で指定します。 リンクのurlとして指定 javascript関数内に、window.location=“skp:” + 関数名を指定し、ボタンに割り当て macの場合はrubyコードが非同期実行 Martin Rinehartによると、 windows ではjavascriptから呼び出されたrubyスクリプトは同期実行され、 戻り値をjavasxriptで受け取る事ができるそうです。 しかし、macではrubyスクリプトは必ず非同期実行のため、 rubyの戻り値をjavascriptで利用することはできないようです。 注意してください。 サンプルコード ほぼ最小構成のWebDialogのサンプルです。 ここでは、ボタンのクリックイベントにjavascriptのスクリプトを設定し、 リンクのurlにrubyのコールバックイベントの仮想urlを指定しています。 {% gist 4367009 %} サンプルコードの使い方 サンプルコードを実行すると、このような画面が表示されます。 ボタンを押すと、javascriptで作成されたメッセージが表示されます。 リンクをクリックすると、rubyで作成されたメッセージが表示されます。 コード内では、リンクのurlとして、“skp:“に続いてrubyのコールバックメソッド名が 指定されているのがわかります。 参考資料 SketchUp Ruby Interface to JavaScript http://www.martinrinehart.com/models/rubies/ruby2javascript_javascript2ruby.html
bitnamiの仮想マシンを使うためのステップ
WordPressを使ったWebサイト作りをしようとしています。 ローカルの仮想サーバーでサイトのソースをGitに上げ、 公開用のサーバーでGitからPullすることで、デプロイする構成です。 そこで、ローカルの仮想サーバーには、 WordPressとMySQLとPHPのスタックである、 bitnamiを使ってみます。 bitnami仮想マシンのダウンロード bitnamiを使うためには、2つの方法があります。 既存の仮想マシンに、bitnamiをインストールする bitnamiインストール済の仮想マシンを、新規にダウンロードする 今回は、2.を解説します。 公式サイトから、bitnamiがインストールされた仮想マシンをダウンロードします。 sshの導入 コマンドラインから操作するため、仮想マシンでsshを有効にします。 公開鍵の受け渡しが、最も苦労した部分です。 公開鍵の渡し方 仮想サーバーの公開鍵を、開発用マシンに渡すための方法は、 次のような選択肢があります。 仮想マシンがSmabaサーバーとなり、ホストOSのがクライアントとなってファイルを受け渡す 逆に、ホストOSの共有フォルダに、仮想マシンからアクセスしてファイルを受け渡す GitHubなど、外部ストレージを経由してファイルを受け渡す ここでは、2.を解説します。 VMware-Toolsの導入 ホストOSの共有フォルダにゲストOSからアクセスするには、 VMware-Toolsをインストールします。 別の記事にまとめていますので、参照してください。 vmware-tools-install ssh鍵の生成 ホストOSで、以下のコマンドを入力します。 sudo ssh-keygen 画面に従ってパスワードを入力すると、公開鍵と秘密鍵が生成されます。 id_rsa.pubファイルが公開鍵、id_rsaファイルが秘密鍵です。 公開鍵を、共有フォルダに置く これから、いまホストOSで作った公開鍵をサーバーに渡します。 まず、id_rsa.pubファイルを、ホストOSの共有フォルダにコピーします。 オイラの環境では、Macの~/shareフォルダです。 マウスでポイっと入れればOKです。 ゲストubuntuに、ホストOSの公開鍵をインストール 共有フォルダに入れた公開鍵を、ゲストOSから見てみます。 $ ls /mnt/hgfs/share > id_rsa.pub ホストOSの公開鍵が見えています。 これを、ゲストOSにインストールします。 でも、いったいどこにインストールするのでしょうか? サーバーには『この鍵をくれたマシンのアクセスには応じるよ』というファイルがあります。 authorized-keysというファイルです。 今回受け取った公開鍵を、authorized_keysファイルに追記します。 このファイルには、複数の鍵を書き込むことができます。 上書きすると、今までアクセスできたマシンがアクセスできなくなる、 という現象が起こりますよ。 cat /mnt/hgfs/share/id_rsa.pub >> /home/bitnami/.ssh/authorized_keys >>に注目。 これで、ゲストOSに、ホストOSの公開鍵がコピーされました。 sshの設定 ゲストOSで、以下のコマンドを実行します。 $ sudo vi /etc/ssh/sshd_config 以下の行を探して、下のように変更します。 ...
ゲストubuntuに、VMware-Toolsをインストールする
ゲストOSの仮想サーバーへ、ホストOSからssh接続するために、 公開鍵を渡します。 今回は、ホストの共有フォルダ経由でファイルを渡します。 ホストOSの共有フォルダを使うには、VMware-Toolsが必要です。 VMwareToolsをインストールする方法を解説します。 VMWare Toolsの導入 VMware-Toolsの仮想CDを挿入 カーネルの番号を確認する カーネルヘッダーをインストールする VMware-Toolsをインストールする VMwareToolsの仮想CDを挿入 VMwareFusionのメニューから、『仮想マシン->VMWareToolsのインストール』を選択します。 その後、以下のように仮想CDをマウントします。 $ sudo mkdir -p /mnt/cdrom $ sudo mount /dev/cdrom /mnt/cdrom > mount: block device /dev/sr0 is write-protected, mounting read-only ここでインストールを行うと、失敗します。 tar xzvf /mnt/cdrom/VMwareTools-8.8.4-730257.tar.gz cd ./vmware-tools-distrib/ sudo ./vmware-install.pl ... Searching for a valid kernel header path... The path "" is not valid. Would you like to change it? [yes] カーネルヘッダーがないとだめだそうです。 カーネルのバージョンを確認する メニューから、『仮想マシン->設定->ネットワークアダプタ』を選択し、 ネットワークにブリッジ接続を指定します。 カーネルのバージョンを確認し、適切なヘッダーを取得します。 uname -a `linux 3.2.0-24-virtual #39-ubuntu SMP Mon May 21 18:44:18 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux` このカーネルバージョンは、3.2.0-24-virtual だということがわかりました。 ...
ConverterでXPマシンを仮想化するために必要な4つのこと
これをお読みの皆さんは、仮想マシンを使っておいででしょうか? Windows XPのマシンを、macのVMWareで使うために仮想化しました。 そこでハマったポイントを、後に続く方のためにまとめておきます。 環境 ホストOS:mac OSX (Lion) 10.7.4 実行環境:VMWare Fusion 4.1.3 仮想化するマシンのOS:Windows XP Pro 仮想化するアプリ: VMWWare Converter 5.0.0 ポイント VMWare Converterをダウンロードして使う (VMWare Fusion付属のMigrationAgentは使わない) WindowsXPのCD-ROMから、sysprepファイルをコピーする 仮想化するマシンは、十分に容量を減らしておく 仮想化するマシンのVolume Shadow Copyサービスを有効にする 1.VMWare Converterをダウンロードして使う 明らかに、速さも信頼性も、Converterのほうが上です。 物理マシンを吸い出す目的のためには、ぜひConverterを使うべきです。 以下のURLからダウンロードして、XPマシンにインストールしてください。 構成について尋ねられます。 『ローカル』と『クライアントサーバー』の二択から、『ローカル』を選びます。 2.WindowsXPのCD-ROMから、sysprepファイルをコピーする 公式ヘルプなどでsysprepと呼ばれるものは、以下の圧縮フォルダのファイル一式です。 (OSのディスク)¥¥SUPPORT¥TOOLS¥ これを、以下のパスに保存します。 C:\Documents and Settings\All Users\Application Data\VMware\VMware vCenter Converter Standalone\sysprep\xp 保存するパスは、VMWareConverterを実行すると教えてくれます。 全ファイルまとめて保存して構いません。 3.仮想化するマシンは、十分に容量を減らしておく 具体的には、次のような事をします。 ディスクのクリーンアップ アプリケーションの削除 データを外部に移動 これが足りていないと、次のエラーが発生するようです。 Failed to create VSS snapshot of source volume. Error code: 2147754783(0x8004231F). 4.仮想化するマシンのVolume Shadow Copyサービスを有効にする コントロールパネルから、『管理ツール->サービス』を選択し、 サービス一覧を表示します。 一覧からVolume Shadow Copy Serviceを捜し、 『スタートアップの種類』を『自動』に設定します。 ...
さくらのレンタルサーバーにgitをインストールした
前回の記事では、さくらのレンタルサーバーにGitを入れようとして失敗しました。 今回は、その解決法を書きます。 解決法 パッケージ管理システム経由では入らないようなので、ソースをコンパイルして直接インストールしてしまう事にしました。 gitのtarballからコンパイルしてインストールします。 mkdir gitinstall cd gitinstall wget https://github.com/git/git/tarball/v1.7.11-rc3 --no-check-certificate tar xjvf git-1.7.3.5.tar.bz2 .cd git-1.7.3.5 ./configure -prefix=$HOME/local gmake vi Makefile # prefix = $(HOME)/local を記述 gmake install これで、/local/binにgitがインストールされます。 Makefileを変更しないと、/binに入ってしまい、具合が悪いようです。 2012/06/22追記: ~/binに入ってしまうと、組み込みのコマンドと混ざるので、 環境が汚くなってしまうからかな・・・と思いました。 パスを通す 最後に、パスを通します。 vi ~/.cshrc set path=( で始まる行を見つけ、括弧の中に、以下を追加します。 /$HOME/local/bin 直前の文字と、スペースを挟んで区切るのを忘れないでください。 これで、gitにパスが通り、which gitが成功するはずです。 光へ続く道が開かれました。 参考文献 さくらのレンタルサーバーにGitをインストールする方法
さくらのレンタルサーバーを借りた
Webサイトを作るため、サーバーを借りてみたくなったsatrexです。 さくらのレンタルサーバー対VPS さて、さくらのレンタルサーバーとさくらのVPSで迷いました。 メリット・デメリットを比較すると、おおむね以下のようになりました。 レンタルサーバー メリット: セキュリティがしっかりしている 設定がめんどくさくない ちょっと安い デメリット: 自由度が低い OSを選べない ディスク容量が少ない(10G) VPS メリット: 自由度が高い OSを選べる ディスク容量が多い(100G〜) デメリット: セキュリティは自分で設定(やや不安) いろいろと設定しないと ちょっと高い コストはたいした問題ではありません。 月500円が1000円でも似たようなもんです。 まずはレンタルサーバー 迷ったらとりあえずミニマルな選択肢を試します。 レンタルサーバーを仮登録してみました。 そこで感じたことをレポします。 sshログイン サーバー屋さんが数多くある中で、 さくらのレンタルサーバーを選んだのは、 sshログインできるからです。 WordPressとか、GUIだけでメンテするのはしんどそうです。 さっそくログインしてみた サーバーのパスワードが書かれたメールが 見当たらず、サポートにメールを送った朝7時でした。 昼の13時ごろにはメールの再送を受けられ、 無事にログインはできました。 しかし、新たな問題の幕開けに、そのころのオイラは気づいていなかったのです。 Gitが入らない 次に欲しいのはGitです。 これがあれば、ローカルの仮想マシンと同期できます。 仮想マシンでコンテンツを作り、 Pushしておき、レンタルサーバーからPullすれば、 電車の中でもWebが作れるというものです。 さっそく、gitをインストールする手段を講じました。 Portsの憂鬱 FreeBSDのパッケージ管理は、Portsで行うようです。 さっそくtarボールをダウンロードしました。 解凍しますが・・・ %tar -x ports.tar tar: Error opening archive: Failed to open '/dev/sa0' 当然ですがroot権限がないため、 Portsが入れられません。 pkgの挫折 Portsがダメならpkgです。 pkgは、WordPressをインストールするために、すでにインストールされているようです。 さっそくこれを使ってみますが・・・ パッケージのインストールを認めてくれません。 とりあえずの結論です。 Git使いは、ちょっといいプランを借りないとだめ お試し期間中なのでキャンセルし、プランを見直そうと思います。 ...
VimSketchUpをリリースしました
VimでSketchUpのRubyスクリプトを書きたい方に朗報です。 VimでSketchUpRubyを実行できるプラグインをリリースしました。 動作のイメージ 例えば、スクリプトで三角形を描いてみます。 初めに、SketchUpを起動します。 これが初期画面。ちなみに、女の子の名前はサンちゃんです。 何もないところに、Rubyスクリプトで三角形を描きます。 まず、VimでSketchUp用のスクリプトを書きます。 そして、”¥sur”とキーボードで入力すると、 SketchUpの画面に変化が起きます。 三角形が描けました。 GitHubに登録しました このスクリプトを、GitHubに登録しました。 リポジトリはここです。 これから インストールの仕方、初期設定など、 使い方に関する記事を書きます。 VimでSketchUpRubyが書けるようになったからには、 補完の支援を受けたり、SketchUpAPIのヘルプをローカルで 見たりできるようになりたいです。 Rubyの補完は弱いので限界はあるのですが、 現在はdictファイルを使って、補完に挑戦しています。 感想 前々から作りたいと言っていたプラグインです。 やっと完成を見ることができました。 長かったです。 相変わらず、VimScriptもSketchUpAPIも手探りですが、 困るのに慣れてきました。