wgetで同じファイル、例えばfoo.zipをもう一度ダウンロードすると foo.zip.1と自動的に別名でファイルを保存してくれるんですが、自動処理の中で使う時に毎回ダウンロードしたくない時にはちょっとめんどくさい。 既に存在する時はダウンロードをスキップ方法 wgetには--no-clobberもしくはそれの省略形 -nc という上書きを禁止するオプションがあるのでそれを使いましょう。 ちなみに “clobber” は「不注意に上書きをしてファイルを破壊してしまう。」という意味の英単語です。 参考 [wget – skip if files exist? – Stack Overflow][1]

続きを読む

かなりハマったのでappend()などを使って動的に追加したHTMLの要素にhoverイベントを追加する方法を残しておきます。説明は全部 coffee script で書いてるので生のJSが良い人は自動変換サービスでもをつかってください。 前提となる知識 まず基本として $('#foo').click -> console.log "押された!" のように #foo に対して click イベントが追加されているわけですが、このイベントの追加はページの読み込み時に行われるために append() などで後から動的に追加された要素にはイベントの登録がされません。 なのでそれを解決するために昔の delegate(), 今なら on() メソッドがあるわけです。簡単でわかり易い名前に統一されたので見た目はスッキリしたのですが、代わりにサンプルコードを探すのが大変になりました。 on って単語短すぎやしません…? 後から追加された要素に click イベントを追加 前置きが長くなりましたが $('#foo').click -> console.log "押された!" を動的に追加された要素に適用させるには $(document).on 'click', '#foo', -> console.log "押された!" とします。document 内部の要素がクリックされるたびにイベントが発火され、クリック対象が #foo ならメソッドが実行されます。もちろん document ではなくページ読み込み時に存在する #foo の親に当たる要素なら何でも構いません。無駄なイベントを発生させないためにできるだけ近い親が良いでしょう。 後から追加された要素に hover イベントを追加 同様に hover イベントも click イベントのように簡単に書き換えれたらいいのですが、hover イベントを on() を使って割り当てると hover は mouseenter と mouseleaveという複数のイベントを受け取っており、このように複数のイベントを受け取ってる関数を on メソッドで割り当てるためにはどのイベントを受け取ったのかを判別して処理する必要が出てきます。 記述が間違っていたので修正しました。 onイベントの引数として "hover"を使った場合、それは単なる "mouseenter mouseleave" の別名であって hover() 関数とは無関係であり、またこの記述方法は jQuery1.

続きを読む

画像編集をRailsでしたかったので ImageMagick を Railsから使うgem rmagick をインストールしようと思ったらこんなエラーが出てしまった。環境は Maverick。 Can't install RMagick 2.13.1. Can't find the ImageMagick library or one of the dependent libraries. Check the mkmf.log file for more detailed information. *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. 解決策 最新版の 2.13.2 をインストールすればOK。ちなみにライブラリのリンクを作るという方法も紹介されてましたがこっちは失敗。 gem install rmagick -v '2.13.2' でインストールしましょう。

続きを読む

yntax error, unexpected ':', expecting keyword_end といつもの見慣れたようなTypoのエラーが出たのでControllerを確認したけどない。何度見てもちゃんとカッコ閉じてるし end も使ってる。なのにエラーが消えない! 解決 モデルのほうで has_many: words って書いてました。 正しくは has_many :words ですね。悲しい。こんなものに結構な時間を着いたしたのが悲しい。

続きを読む

「Rspecよくわかんねー。」という思いを胸に抱き続けてきましたが、やっぱりやらないとダメっぽいので使おうとしたら早速 undefined method 'visit'と言われて困る。 原因 このエラーの原因はCapybaraが最近のアップデートでこっそりと対象のディレクトリを requests から features に変えたのが原因らしいです。やめてほしいそういうの。 しかも [Google group][1] にこっそり報告してるだけ。もっと こえを おおきく。 解決策 spec_helper.rb に以下をたす解決策もあるそうですが、将来的に requests じゃなくてfeatures を使うという意向ならそうしたほうが楽そうなので mv spec/requests/ spec/features して自分は対策しました。 ちなみに spec_helper.rbに足す場合はこちら。 require 'capybara/rails' require 'capybara/rspec' include Capybara::DSL 参考 [ruby on rails – Capybara: undefined method 'visit' – Stack Overflow][2] [rails 3.2でRspecを導入したけど NameError – undefined method `visit' って出るときの対策 – どぶんけーブログ][3]

続きを読む

Railsのrequest.fullpath だと param 以降も受け取ってしまうので、paramの値を使わない時の方法。 解決策 splitで邪魔なものをとる方法 request.fullpath.split("?")[0] path を使う方法。こっちのほうがよさそう。 request.path 参考 [ruby on rails – request.fullpath with no parameters – Stack Overflow][1]

続きを読む

rails new したらbundle install が atomic の所でコケた。何か前も同じエラーに引っかかって結構検索した記憶があったんだけど今回も対処法を探すのに結構な時間がかかってしまった。 エラーメッセージはこんなの。 run bundle install Fetching gem metadata from https://rubygems.org/.......... Fetching gem metadata from https://rubygems.org/.. Resolving dependencies......... Installing rake (10.1.1) Installing i18n (0.6.9) Installing minitest (4.7.5) Installing multi_json (1.8.2) Installing atomic (1.1.14) Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /Users/ironsand/.rbenv/versions/2.0.0-p247/bin/ruby extconf.rb *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details.

続きを読む

Zurb Foundationのトップバーの右上のメニューですが、デフォルトでは幅が940pxを切るとMenuに折りたたまれてしまうという結構広い設定になっています。 もうちょっと幅が狭くても出るようにしたかったので修正しました。 対策 設定ファイルを以下のように書き換えます。環境はRailsです。 // $topbar-breakpoint: 940 !default; // Change to 9999px for always mobile layout $topbar-breakpoint: emCalc(600px); ちなみに[Menu]自体がでなくて少し困ったのですがtoggle-topbar menu-icon を設定してなかったのが原因だったようです。 <ul class="title-area"> <li class="name"> <h1><%= link_to "Site Title", root_path %></a></h1> </li> <li class="toggle-topbar menu-icon"><a href="#"><span>Menu</span></a></li> </ul>

続きを読む

jQuery で選択した要素が存在するかどうかの関数が何故か用意されてないようだったので追加しました。 CoffeeScriptで書いてるのでjavascriptとして使いたい場合は converter にかけてください。 $.fn.isExist = -> $(@).length != 0 $.fn.isNotExist = -> $(@).length == 0 参考 [How to tell if an element exists | jQuery for Designers – Tutorials and screencasts][1]

続きを読む

プロフィール画像

ironsand

語学好きのプログラマーです

Railsエンジニア

Yokohama