2007/11/26

ActiveScaffold: list.per_page

ASのリスト表示で1ページに表示するレコード数を設定する。

controllers/application.rb とかに以下のように記述する。

ActiveScaffold.set_defaults do |config|
config.list.per_page = 20
end


config.list.per_page でなくて,config.list.results_per_page と書くとエラーになるので要注意。

ActiveScaffold :: API: List

2007/11/21

Strongspaceなんか変

昨日からsftpでログインするとこんな感じ。

Connecting to xxxxx.strongspace.com...
Address 4.71.165.121 maps to 4-71-165-121.revdns.textdrive.com,
but this does not map back to the address
- POSSIBLE BREAKIN ATTEMPT!

DNSの正引きと逆引きが不一致だな。

% host 4-71-165-121.revdns.textdrive.com
4-71-165-121.revdns.textdrive.com has address 207.7.108.21
% host 207.7.108.21
21.108.7.207.in-addr.arpa domain name pointer one.textdrive.com.

2007/11/17

ActiveScaffold: Export records to CSV

CSVファイルにデータをexportするための修正点。

ActiveScaffold を使って Ruby on Rails を機能アップする

より引用。
controllerの変更点。

class UsersController < ApplicationController
active_scaffold :user do |conf|
conf.action_links.add 'export_csv', :label => 'Export to Excel', :page => true
end

def export_csv
# find_page is how the List module gets its data. see Actions::List#do_list.
records = find_page().items
return if records.size == 0

# Note this code is very generic. We could move this method and the
# action_link configuration into the ApplicationController and reuse it
# for all our models.
data = ""
cls = records[0].class
data << cls.csv_header << "\r\n"
records.each do |inst|
data << inst.to_csv << "\r\n"
end
send_data data, :type => 'text/csv', :filename => cls.name.pluralize + '.csv'
end
end
モデルの変更点。
class User < ActiveRecord::Base
# The header line lists the attribute names. ID is quoted to work
# around an issue with Excel and CSV files that start with "ID".
def self.csv_header
   "ID,Last Name,First Name, Email, Birthdate"
end
# Emit our attribute values as a line of CSVs
def to_csv
id.to_s << "," << last_name << "," << first_name << "," << email
<< "," << birthdate.to_s
end
end

2007/11/13

新幹線うるさすぎ

今朝早起きして東海道新幹線で出張のとき、新幹線の中で寝て行こうと思ってたら行楽客のおばさまたちがペチャククチャうるさくてぜんぜん寝れない。
ケータイででかい声で話すのはダメだってアナウンスしてるんだから、公共の場所だってことをわきまえないであまりにデカイ声でしゃべるやつもデッキでお願いします。

2007/11/10

active scaffold upload branch

pluginのインストール方法。


./script/plugin install \
http://activescaffold.googlecode.com/svn/branches/upload


vendor/plugins/upload を vendor/plugins/active_scaffold_upload に変更した方がいい。

active scaffold upload branch

File Column Bridge + ActiveScaffold

file_column と ActiveScaffold の橋渡しをする file_column bridge はすでに trunk に取り込まれてるらしい。

http://wiki.activescaffold.com/wiki/published/FileColumnBridge

upload したファイルは、上記の例だと、以下のディレクトリにコピーされる。

public/entry/filename
public/entry/filename/1
public/entry/filename/2
.
.
.

デフォルトの状態だと,Excelのファイルの拡張子が,.xls ではなくて .xls.doc になってしまうので,以下のオプションを model で設定。

file_column :filename, {:fix_file_extensions => nil}

2007/11/06

Userstamp

Model に created_by や updated_by というカラムを設けておいて、レコードの作成/更新時にUser modelのidを自動的に代入できる。

Userstamp

login_engine との親和性も問題ない。
ただし、list 上で #<User:0xb7c88a2c> のように表示されてしまうので、helper で整形する必要あり。ActiveScaffold の場合は partial override を用いる。

2007/11/05

ActiveCalendar

ActiveScafoldにも対応したdate_selectやdatetime_selectをjscalendarに対応させてくれるplugin。

ActiveCalendar - Javascript Calendar on Rails

インストールするには、アプリケーションのルートディレクトリでpluginをインストール。

./script/plugin install http://activecalendar.googlecode.com/svn/trunk/activecalendar

次にlayoutのヘッダ部分に、以下のコードを追加する。これだけ。

<%= stylesheet_link_tag "/javascripts/jscalendar-1.0/calendar-win2k-cold-1.css" %>
<%= javascript_include_tag "jscalendar-1.0/calendar.js" %>
<%= javascript_include_tag "jscalendar-1.0/lang/calendar-en.js" %>
<%= javascript_include_tag "jscalendar-1.0/calendar-setup.js" %>

layout以外のviewの変更や、model, controllerの修正は必要ない。すばらしい。

ActiveUpload+ActiveScaffold

ActiveScaffoldでも使えるファイル・アップロードのためのプラグイン。

ActiveUpload - Easy File Uploads in Rails

IEではうまくuploadはできたけど、Firefoxではうまくできていない。
あと、uploadしたあと、showできていない。

2007/11/04

Rails: LoginEngine

Railsに認証機能を追加するplugin(engine)。

LoginEngineを使ってみる

を参考にインストールして設定を進めていくと、ユーザのテーブルshemaのインポートでコケる。READMEも内容が古くてマチガイだらけ。

config/environmtn.rbに以下の設定を追加。
Rails::Initializer.run do |config|
..中略..
# config.plugins = %W( exception_notification ssl_requirement )
config.plugins = ["engines", "*"]
..中略..
end

require File.join(RAILS_ROOT, "vendor", "plugins", "engines", "lib", "engines", "deprecated_config_support")

module LoginEngine
config :salt, "mysalt"
config :email_from, "foo@company.co.jp"
config :admin_email, "foo@company.co.jp"
config :app_name, "ermgr"
end

#Engine.start :login

Engine.start :login はいらないらしい。
usersテーブルを作成するには、
rake engine_migrate ENGINE=login

でなく、
$ script/generate plugin_migration
create db/migrate
create db/migrate/001_login_engine_to_version_1.rb

を実行する。001_login_engine_to_version_1.rb ができて以下のテーブルが追加される。
plugin_schema_info
schema_info

以下のrakeコマンドを実行すると、
$ rake db:migrate ENGINE=login
(in /home/kaori/ermgr)
== LoginEngineToVersion1: migrating ===========================================
== InitialSchema: migrating ===================================================
-- create_table("users", {:force=>true})
-> 0.1120s
== InitialSchema: migrated (0.1130s) ==========================================

== LoginEngineToVersion1: migrated (0.1780s) ==================================

最終的に users テーブルが追加される。テーブルのcolumnは下図の通り。

Rubyist - pulscope.ruby - Rails 1.2.3でEngines及びLogin Engineプラグインを利用する

が参考になる。


Javascript Password Strength Meter

Goolgeアカウントの作成時のように、パスワード強度を動的にチェックするスクリプト。

Javascript Password Strength Meter

Password Strength Meterっていうのもあるけど、チェックが甘い。長さだけしかチェックしていない?

2007/11/01

FOMA SO905iCS

これいいよなぁ。ちょい小さくて軽かったらまさにほしかったものそのもの。
海外でローミングもできるっぽい。スゲー
ソニーエリクソンのロゴがいいな。