ここの続き。
NamedBaseにはname以外にも色々な属性があるらしい。色々試してみて、↓みたいな感じだと把握。
属性名 | データ型 | 内容 |
---|---|---|
name | String | Generatorの第1引数に渡した値。"ruby script/generate model hoge"だと"hoge"となる。 |
class_name | String | nameをクラス名の形にしたもの。nameが"foo_bar"なら"FooBar"となる。 |
singular_name | String | nameの単数形 |
plural_name | String | nameの複数形 |
table_name | String | nameをテーブル名の形にしたもの。nameが"FooBar"なら"foo_bar"となる。 |
class_path | Array | nameがFoo::Bar::Bazなら["Foo", "Bar"]となる。 |
file_path | String | 実際にファイルをどこに置くか? nameが"Foo::Bar::Baz"なら"foo/bar/baz"となる |
class_nesting | String | ネストしているクラス? nameが"Foo::Bar::Baz"なら"Foo::Bar"。 |
class_nesting_depth | Fixnum | ネストの深さ。nameが"Foo::Bar::Baz"なら"2"。 |
file_name | String | singular_nameのalias |
actions | Array | 第2引数に渡した値。"ruby script/generate model hoge puge moge"だと["puge", "moge"]となる。 |
(参考)調べるために使ったプログラムと実行結果
(追記)調査用のプログラムがなんか宜しくなかったみたい。なので、やり直し。
require 'rbconfig' class MyGenGenerator < Rails::Generator::NamedBase def initialize(runtime_args, runtime_options = {}) super end def manifest record do |m| [ "name", "class_name", "singular_name", "plural_name", "table_name", "class_path", "file_path", "class_nesting", "class_nesting_depth", "file_name", "actions" ].each do |var| print "#{var} : " p self.send(var) end end end end
実行すると。
$ ruby script/generate my_gen foo name : "foo" class_name : "Foo" singular_name : "foo" plural_name : "foos" table_name : "foos" class_path : [] file_path : "foo" class_nesting : "" class_nesting_depth : 0 file_name : "foo" actions : []
$ ruby script/generate my_gen foo bar baz name : "foo" class_name : "Foo" singular_name : "foo" plural_name : "foos" table_name : "foos" class_path : [] file_path : "foo" class_nesting : "" class_nesting_depth : 0 file_name : "foo" actions : ["bar", "baz"]
$ ruby script/generate my_gen foo_bar name : "foo_bar" class_name : "FooBar" singular_name : "foo_bar" plural_name : "foo_bars" table_name : "foo_bars" class_path : [] file_path : "foo_bar" class_nesting : "" class_nesting_depth : 0 file_name : "foo_bar" actions : []
$ ruby script/generate my_gen FooBar name : "FooBar" class_name : "FooBar" singular_name : "foo_bar" plural_name : "foo_bars" table_name : "foo_bars" class_path : [] file_path : "foo_bar" class_nesting : "" class_nesting_depth : 0 file_name : "foo_bar" actions : []
$ ruby script/generate my_gen Foo::Bar::Baz::Qux name : "Foo::Bar::Baz::Qux" class_name : "Foo::Bar::Baz::Qux" singular_name : "qux" plural_name : "quxes" table_name : "foo/bar/baz_quxes" class_path : ["foo", "bar", "baz"] file_path : "foo/bar/baz/qux" class_nesting : "Foo::Bar::Baz" class_nesting_depth : 3 file_name : "qux" actions : []
$ ruby script/generate my_gen foo/bar/baz/qux name : "foo/bar/baz/qux" class_name : "Foo::Bar::Baz::Qux" singular_name : "qux" plural_name : "quxes" table_name : "foo/bar/baz_quxes" class_path : ["foo", "bar", "baz"] file_path : "foo/bar/baz/qux" class_nesting : "Foo::Bar::Baz" class_nesting_depth : 3 file_name : "qux" actions : []