|
精华帖 (0) :: 良好帖 (13) :: 新手帖 (7) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-03-07
其实说严重点,这可以算ruby的一个语法陷阱,一般人很难会把所有使用类的地方都写上全路径,因此“写ruby第一要注意的就是:想尽一切办法避免重名”仍然是需要时刻提醒自己的。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-03-07
希望rails能把controller分成两类:
1,主表维护 2,业务操作 |
|
| 返回顶楼 | |
|
最后更新时间:2008-03-10
我测试了一下,还有一个model不放在根下,要求跟control,helper的分层一致的理由
我用rspec,如果不一致,generate出来的代码还需要手工改,很麻烦,一致就没问题,例如都在users层(module)下,ruby script/generate rspec_controller users\user |
|
| 返回顶楼 | |
|
最后更新时间:2008-03-16
2.0已经有了命名空间,例如:
ruby script/generate model Admin::User 这样将会生成
create app/models/admin
create test/unit/admin
create test/fixtures/admin
create app/models/admin/user.rb
create test/unit/admin/user_test.rb
create test/fixtures/admin_users.yml
exists db/migrate
create db/migrate/002_create_admin_users.rb
controller也可以。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-03-18
不过migrate无法支持按模块创建目录,所有的migratee都会放在一个db/migrate目录下。
习惯了java的package管理,感觉ruby or rails在这方面比较别扭。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-04-24
pig345 写道 如果问题是:
liusong1111 写道
class A
end
module C
module A
class B
# use class A
end
end
end
那么,考虑下: ruby存在的时间比java更久,这么基础的问题(严重点说——缺陷)难道只有咱们碰到过? 或者是ruby社区长久以来对此一直视而不见???这、这ruby还能用么。。。 先放两句大话,呵呵,其实也是最近才找到解决方法,分享下: class A
def self.who?
puts self
end
end
module C
module A
class B
def self.ask_A
A.who?
::A.who?
end
end
def self.who?
puts self
end
end
end
C::A::B.ask_A
irb里面实验下看看? 我前面的想法跟你所说没有冲突,我当时的思路还不清晰。 不是ruby的问题,而是直接依赖rails的自动加载机制不行,从理论上说,也无法解决。 假设你上面代码,class A定义在a.rb中,module C定义在c.rb中。c.rb没有显式require 'a.rb',我们假定事先加载了rails(或具体的active_support)。 module C中那行A.who? ,因为查找时先找到了module A,所以就用了它。而我本期望它会自动加载a.rb,使用class A的。由于提前找到const(module A)而短路了自动加载机制的const_missing,所以依赖这种加载的自动化不行。 解决方式有两种,一是手工require 'a.rb',并像你上面::A这样用。二是用model :a的声明。第二种方式我没有查看它的源码,大致推想它直接找到models目录的文件加载,跟第一种方法本质一样。 结论是:不是加载不到,而是不能自动加载到。 |
|
| 返回顶楼 | |






