2007年10月16日

Railsでau携帯の分割ダウンロードに対処するコードを公開してみる

 Railsでauの携帯電話から3g2の動画がダウンロードできるようにするコードを書いたので公開してみる。

 auの携帯電話から3g2をダウンロードしようとすると分割ダウンロードの要求が送られて、au用マルチメディア・コンテンツダウンロードタグにしても「ダウンロードデータが正しくありません」となってしまうという現象が発生していました。

 これはその現象にRailsで対処するためのコードです。あくまでも参考のためのサンプルで動作の保障はできません。
def send_3g2_file
path = RAILS_ROOT + '/public/' + params[:filename]
filesize = File::size(path)
range = request.env["HTTP_RANGE"]

if range and /^bytes=(\d+)\-(\d+)$/ =~ range
offset = $1.to_i
limit = $2.to_i
length = limit - offset + 1
response.headers["Content-Range"] = sprintf("bytes %d-%d/%d", offset, limit, filesize)
response.headers["Content-Disposition"] = "devmpzz"
content = IO::read(path, length, offset)
status = 206
else
content = IO::read(path)
status = 200
end

response.headers["Accept-Ranges"] = "bytes"
response.headers["Content-Length"] = length

Content-Typeの後に「; charset=utf-8」とか付かないようにするため
response.headers["Content-Transfer-Encoding"] = "binary"

render :text => content, :status => status, :content_type => "video/3gpp2", :layout => false
end

posted by よっしぃ at 10:31 | Comment(0) | TrackBack(1) | Ruby On Rails

2007年10月12日

libfaac、libfaadのコンパイル&インストール


posted by よっしぃ at 20:17 | Comment(0) | TrackBack(0) | Linux

2007年10月09日

[Rails 2.0 Preview]新機能いくつか

 Rails 2.0: Preview Releaseの新機能でわかりやすいところをあげてみる。

scaffoldの変更


 まず、scaffoldで作成されるものが変わった。Rails 1.2でscaffold_resourceで作成されるものが2.0では、scaffoldになった。scaffold_resourceでは、RESTfulのコードが作成されていたので、Rails 2.0以降は、RESTfulメインということのようです。

1つのアクションに対して複数のビューが指定できる


 これも、Rails 1.2で少し出てきていたが、1つのアクションに対して複数のビューを指定できるようになった。
 またそのビューごとにテンプレートエンジンを指定できるようになった。

 リクエストでは、「(アクション).(拡張子)」と指定できるようになりました。描画形式はhtml、rss、xmlとか、テンプレートエンジンは、erb(Rails標準)、haml(記述が簡単なテンプレートエンジン ※使用できるためには別途ライブラリが必要)とかになると思います。

show.html.erbだと、showアクションの結果をhtml形式で出力するerbベースのビュー、show.xml.hamlだと、showアクションの結果をxml形式で出力するhamlベースのビューということになります。

 この変更のため、scaffoldで作成されるファイルもedit.html.erb、index.html.erb等に変更されています。

マイグレーションの記述方式の変更


create_table :people do |t|
t.column, "account_id", :integer
t.column, "first_name", :string, :null => false
t.column, "last_name", :string, :null => false
t.column, "description", :text
t.column, "created_at", :datetime
t.column, "updated_at", :datetime
end


create_table :people do |t|
t.integer :account_id
t.string :first_name, :last_name, :null => false
t.text :description
t.timestamps
end

のように記述できるようになりました。

 t.column ・・・の代わりに、t.integer、t.stringとか型名の関数で指定できます。

 同じ型でオプションが同じ場合、t.string :first_name, :last_name, :null => falseとか複数まとめて指定できます。

 t.timestampsと指定すると、t.datetime :created_at, :updated_atと同じ意味になります。
タグ:ruby on rails 2.0

posted by よっしぃ at 17:49 | Comment(0) | TrackBack(0) | Ruby On Rails

2007年10月03日

[Rails 2.0 Preview]データベース作成・削除のRakeタスクの追加

 Rails 2.0: Preview Releaseに興味深いRakeタスクが追加されていたので紹介します。

 紹介したいのは以下の4つです。
db:create
db:create:all
db:drop
db:drop:all
 db:create〜はデータベース作成、db:drop〜はデータベース削除のタスクになります。どれもconfig/database.ymlを元に操作を行います。allがあれば、config/database/ymlに定義してある全てが、allがなければ、RAILS_ENV(何も指定しなければdevelopment)にあたるものが対象になります。

 MySQLの場合、db:create〜でCHARSETとCOLLATIONが指定できます。何も指定しないと、それぞれ「utf8」、「utf8_general_ci」となります。

 ちなみに、どのコマンドもhostの値がlocalhostの時にのみ実行できます。
タグ:2.0 ruby on rails

posted by よっしぃ at 22:20 | Comment(0) | TrackBack(2) | Ruby On Rails

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。