今日(2009/1/1)現在の Fastladder がうまくインストールできない。インストール手順は付属の手順書通りなんだけど、具体的には rake でのDB構築がうまくいかない。 症状としては rake db:migrate のところで以下のメッセージが表示される。 rake aborted! no such file to load — gettext/rails 【結果】 現在標準で gem からインストールできる gettext ではバージョンが新しすぎるらしい。今回、標準だと2.xが入ってきたんだけど、これを1.xにすることで正常に rake が実行できた。コマンドは以下。 $ sudo gem install gettext --version 1.10.0 【詳細】 前述の通り gettext/rails がどうのとエラーになるので gettext が入っていないのかと
Ruby, memcached | 14:59 | memcachedのインストールmemcachedの最新版をインストールするのであれば、ソースからインストールする必要がありますが、今回はちょっと使ってみるだけなのでパッケージからインストールします。 $ sudo apt-get install memcached memcachedクライアントライブラリのインストール sudo gem install memcache-client memcachedの起動 $ sudo /etc/init.d/memcached start プログラムの実行以下のようなプログラムを作成しました。 require 'rubygems' require 'memcache' cache = MemCache.new 'localhost:11211' cache["foo"] = "本日は晴天なり" p
最近、認証部分を OpenID に対応する事も多いみたいで、会社で「開発時に外部の OpenID プロバイダを利用してます?」って聞かれたんで、普段やってる方法を晒してみよう。 � 利用するのは Ruby 向けの OpenID ライブラリ ruby-openid で、以下のようにインストールする。 % gem install ruby-openidで、ライブラリの中に OpenID プロバイダのサンプル実装(rails_openid)があるので、それを利用しています。 % cp -pr $WHERE_GEM_HOME/gems/ruby-openid-2.0.x/examples/rails_openid ~/tmp # 起動すると log ディレクトリとか作成されるので、一応どっかにコピー % cp ~/tmp/rails_openid % ruby ./script/server -p
普通にRuby on RailsをCGI(dispatch.cgi)で動かすと遅すぎてやってられませんが、gateway.cgiを使うと、そこそこの速度で動くようになります。 最初に仕掛けを紹介してしまうと、1回目のアクセスがあったときに常駐プロセスを起動し、2回目以降のアクセスはその常駐プロセスに処理させるようになっています。CGI自体は常駐プロセスに処理を投げるだけなので軽い、というわけです。ただし、1回目のアクセスは通常通りCGIで動作させたくらいの遅さです。 常駐プロセスは一定時間アクセスがないと自動的に終了するので(次のアクセスがあったときにまた起動する)、いろいろ制限のある環境でも使える、かもしれません。 さて、そのgateway.cgiですが、Railsの標準パッケージの中に含まれています。まだexperimentalらしいですが、多少パッチを当てると動きます。 使い方は↓こ
I’m back from the Rails Conference Europe in Berlin. I realize that a 45 minute talk is hardly enough to tell everything which is important to say about Rails security. Moreover, you will never get the level right in a talk about security (or generally): There are Rails newbies, everyday-programmers and even security experts. Anyway, I was referring to this web site quite often as I wanted to prov
» Pluit Solutions » Blog Archive » How to Create Easily Customisable Widget With Rails では Rails でブログパーツを作る方法が詳しく解説されている。 ページ下の Web Widgets With Rails という PDF ファイルだ。 ちなみに英語ではブログパーツ(Blogparts)という呼び名よりも Widget の方が一般的のようだ。 ブログパーツのことを調べていて、英語の情報が欲しいときは、Widget で検索するのが良い。 解説の中で、 if (someClientSideVariable) { $('a').update( 'thing') %>); } else { $('b').update( 'thong') %>); } のように Javascript 中で ERB を利用でき
【ma2注】Rails Wiki にあるドキュメントの翻訳です。 http://wiki.rubyonrails.org/rails/pages/HowToWriteAnActsAsFoxPlugin Plugins を参照のこと。 SomeImportantPluginNotes を参照のこと。 ◆ステップ1 # ruby script/generate plugin acts_as_fox これで新しいディレクトリ「acts_as_fox」が vendor/plugins の下に作られる。 ◆ステップ2 init.rb というファイルを作って,以下の行を追加する。 require 'acts_as_fox'◆ステップ3 lib/acts_as_fox.rb というファイルにコードを追加する。 require 'active_record' module Foo module Acts
Rails のアプリケーションで DB や HTTP リクエストから取ってきた文字列を rhtml で出力するときに h メソッドなどでエスケープしないとエラーを出すというプラグインを作ってみました。実装方法としては Ruby の Object#tainted? メソッドを使って文字列がエスケープ処理を通過しているかどうか判定するという単純なものです。自動的にエスケープ処理を入れるわけではないので既存のアプリケーションと互換性を保ちつつ、XSS などを引きおこす Script Insertion を許してしまう可能性をかなり下げられると思います。README: http://wiki.rubyonrails.org/rails/pages/Safe+ERBダウンロード: http://www.kbmj.com/users/shinya/rails/safe_erb-0.1.zipRuby
テストの作業は嫌われる場合が多い。確かにそれ程生産的には見えないかも知れない。が、リリース後の負荷を減らすためにも欠かすことのできない作業だ。多少なりとも楽をして、的確にテストを行っていきたい。 Webベースのブラウザテストを行うのにSeleniumは最適な選択だ。そしてRails使いであればこのようなソフトウェアもある。 今回紹介するオープンソース・ソフトウェアはSelenium on Rails、Railsプラグインで提供されるSeleniumだ。 Selenium on Railsはscript/pluginを使ってインストールできるSeleniumで、インストール後はgenerateを使ってテストを生成できる。後はそこにテストケースを記述していけば良い。実際の利用はtestで動作させて、「http://localhost:3000/selenium/」で動作する。 Selenium
RJSテンプレートは、RubyコードからJavaScriptコードを生成 するための仕組みです。 今回は、RJSテンプレートの中でJavaScriptの条件分岐を 簡潔に記述するために、PrototypeHelperを拡張する方法を紹介します。 以下のようなファイルを作成して、config/initializersの下に 設置します(Rails 2.0以降の場合) prototype_helper_ext.rb 1 module ActionView 2 module Helpers 3 module PrototypeHelper 4 class JavaScriptGenerator 5 def if(condition, &block) 6 page << "if(#{condition}){" 7 block.call if block 8 page << '}'
_ map.resourcesとApacheでページキャッシュが共存できない件とその解決法 RailsはRestfulな方向に進化していて、最近は map.resourcesというメソッドを使いリソースに対するルーティングを一気に定義したりできます。 map.resources :targets とroutesに書いたとき、定義されるルーティングは targets GET /targets {:action=>"index", :controller=>"targets"} formatted_targets GET /targets.:format {:action=>"index", :controller=>"targets"} POST /targets {:action=>"create", :controller=>"targets"} POST /targets.:forma
Prototype Windowsを使って、Windowが閉じたときに親ページが更新される方法を見つけた。 AddOververでコールバックを定義するのか。 rjsにて書くが、だんだんRubyからJavaScriptになりつつあるなぁ。。。 options = { :title => "編集:#{@wapi_seq.uri}", :width => 600, :height => 400, :zIndex => 100, :url => url_for(:controller => 'wapi_seqs', :action => :edit, :id => @wapi_seq)} page << "var win = new Window( 'window_edit_#{@wapi_seq.id}', #{params_for_javascript(options) } ); var o
メッセージのやり取りをスレッドで表現したくて、Railsでツリーを扱うacts_as_treeにたどり着いた。が、なんかacts_as_treeに関してはあんまり資料が無いね。。Module: ActiveRecord::Acts::Tree::ClassMethodsにある使い方以外無くて、後はparent_id使うよ〜とか書いてあるとこがあるくらい。 ちょうど下の図みたいなTreeを作りたかったのでいろいろ試した結果、acts_as_treeだけじゃ全然Treeとしてだめだってことが分かったよ。 まずそのままではself.rootとself.rootsはあるけど、@node.rootはできない。このままじゃスレッド表示の各メッセージで、そのルートが取れないじゃないか!! 以下がacts_as_treeのソースだけど、self.rootsとself.rootしか無いので、当然rootがと
久々の更新になってしまった...。ちょっと、別件で集中してやってみたいことがあったのだ。そして、気付いてみたら、前回から1ヶ月も経過していた。1ヶ月前を思い出しながら、気を取り直して、続けます。だいぶ忘れているので、まずはsortable_elementのオプションについて、思い出しながらまとめ。未だ、分からないことも多い...。 オプション デフォルト値 自分の理解 tag li ここでliと指定されているので、liタグがドラッグ可能な要素になるようだ。デモ>> only 指定したclass属性のアイテムのみ並べ替え対象になる。デモ>> constraint vertical verticalが指定されていると、ドラッグした時に垂直方向に制限された動きしか出来ない。falseを指定すれば、縦横自在にドラッグ可能になる。デモ>> overlap vertical 並び替えリストの方向を垂直
_("max is %{max}, min is %{min}.") % {:max=>3,:min=>1}
● [Rails] with_scope (ActiveRecord) ActiveRecord::Base.with_scope(method_scoping = {}) {|| ...} with_scope はテーブル操作の範囲を限定するクラスメソッドです。指定されたブロックを実行する際、xxx_by_sql 以外のテーブル操作用のクラスメソッド全てが引数で指定された制限(影響)を受けます(※1)。 以下のような場面で効果を発揮します。 共通の値を持つ複数アイテムを簡単に初期化したい。 find(params[:id]) で取得したデータが不正アクセスかどうかの検証が面倒だ。 かと言って、find 時に :conditions 指定するのも面倒だ。 さらに、それをCRUD毎に指定するなんて気が遠くなる。 ※1:レシーバと同じクラスのみ影響を受けます。 ● スコープ指定 スコープの種類
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く