Rack 中貌似没有PATH
这个东东。楼主的意思是系统环境变量里的PATH
么?
Rack 中 env['SCRIPT_NAME']
的解释是:
## <tt>SCRIPT_NAME</tt>:: The initial portion of the request
## URL's "path" that corresponds to the
## application object, so that the
## application knows its virtual
## "location". This may be an empty
## string, if the application corresponds
## to the "root" of the server.
the “base” of the URL, representing the root of the application.`
觉得这就是 App 启动后,URL 里的前缀。也可以说是项目的挂载路径吧。
比如,如果 config.ru
中为
run MyApp::Application
env['SCRIPT_NAME']
的值为空
。--prefix=/p1
参数(比如 thin start --prefix=/p1
),首页地址为 http://localhost:3000/p1/ ,env['SCRIPT_NAME']
的值为 '/p1'
。如果在config.ru
中,写
map '/p2' do
run MyApp::Application
end
env['SCRIPT_NAME']
的值就是 '/p2'
。thin start --prefix=/p1
命令启动,首页地址为 http://localhost:3000/p1/p2/ ,那么 env['SCRIPT_NAME']
的值就是 '/p1/p2'
。 可以把必要的信息(比如 user_id, visited_at 等)保存成 JSON 格式,放在某个字段里。然后重写一下这个字段的 writer 和 reader 方法。使用 JSON 的话,可以让其他语言也能读取。
rails 3.2 里 ActiveRecord::Store 的 store,就是把一些属性序列化后保存的。
Nginx 和 Apache 可以同时安装啊。前端用 Nginx 监听 80 端口,处理静态文件;剩下的请求再交给 Apache 去处理。Apache 用其他端口,Nginx 做反向代理。
factory_gril +1
可以使用 #object_id
方法来看是否是一个对象。
与大多数语言不同,Ruby 的字符串是可变对象。<<
在原来的对象上操作,+
返回新对象。效率如何,可以写 benchmark 看看结果。
个人看法:
具体问题具体做,不绝对哈。不过这种 callback 不要太多,要不然多了以后太难维护了。
Qt 呢?
豆瓣也有一个桌面库 onering-desktop ,后端是 web,前端是 css+js。具体没用过,仅供参考。
或许人家是那种不写代码的 lead dev, 项目经理,CTO ⋯⋯
1 楼的帖子里不是说了么⋯⋯但是我没有验证,因为不用 postgresql。SQL 语句是
ALTER SEQUENCE table_name_id_seq RESTART WITH 1000000;
#3 楼 @zfjoy520 监控文件有个 gem fssm
( https://github.com/ttilley/fssm ,File System State Monitor),针对不同的系统和系统现有的 gem,使用不同的 backend
参见 http://ruby-china.org/topics/834 帖子和回复。
nginx -s reload
是重启 Nginx
touch /tmp/restart.txt
是重启当前的 Rails 项目
Passenger 会检查这个文件,如果这个文件时间戳改变了,或者被创建或者移除,Passenger 就会 reload。
相关的实现可以在 passenger 代码中查看 needsRestart 这个函数:
https://github.com/FooBarWidget/passenger/blob/master/ext/common/ApplicationPool/Pool.h
把默认的 logger 改成 Logger.new(STDOUT)
,比如
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveResource::Base.logger = Logger.new(STDOUT)
ActionController::Base.logger = Logger.new(STDOUT)
projectID 的类型是什么呢?
如果是用 rvm+passenger 的话,可以在 nginx 里配置一个 rails 项目以普通方式运行,然后其他的项目使用 passenger standalone 方式运行,在 nginx 配置 Proxy。
官方文档 Phusion Passenger & running multiple Ruby versions 可供参考。
正则?
把帖子内容里的 h1-h6 设置成一个样式,这样就不会影响排版了吧?
#1 楼 @jinleileiking OS 是 CentOS,看标题⋯⋯
路由里的 id,只是参数的 key 的名字,不一定非得是整数。
另外,Rails-2.3.5 的相关代码在 ActiveRecord::ConnectionAdapters::Quoting#quote
。如果这个字段,在数据库里的字段类型是 integer,那么拼 SQL,会先把值 #to_i;如果是 float,那就是 #to_f:
elsif column && [:integer, :float].include?(column.type)
value = column.type == :integer ? value.to_i : value.to_f
value.to_s
column 是数据库的字段;value 是字段值。
这是个 feature。
PS:有一些站点为了 SEO 或者其他目的,把 title 放在 url 中(这个叫 slug 吧?),使用的是 http://localhost/posts/123-hello-world 这种形式。reddit 的评论地址是 http://www.reddit.com/r/pics/comments/:id/ ,也可以是 http://www.reddit.com/r/pics/comments/:id/:title ,这个 title 一般是帖子标题,但可以是任意合法的字符串。
信息太少,请贴出足够的代码