• RubyMotion 测试小感 at 2012年05月07日

    不错~ 一直以来就期待 motion ruby 这样的东西,不知道用他编译出来的程序能否通过 app store 审核.. 另外 Matz 的 mruby 也很值得期待~

  • openssh...

  • 把 session 放到服务器数据库里~ 具体参见 rails guides

  • 个人觉得,社区内容质量下降不完全是功能的问题,也有管理方面的问题,可以考虑定期组织主题讨论之类的活动。

  • web socket 有专门的协议,浏览器的 js 无法建立 http 以外的连接

  • #6 楼 @stc cron 不从 web 进程启动,更 passenger 应该没关系,rake 某些任务的确很占 cpu,感觉也很正常

  • #17 楼 @bony 那样就变成问答社区了... 而不是论坛

  • #11 楼 @lb563 有 secure 选项阿..楼主你看下文档~ http://apidock.com/ruby/FileUtils/rm_rf

  • #3 楼 @ruby_sky 也不是 java...没有类型的

  • 楼主要 cron 的话推荐whenever这个 gem ,比系统的 crontab 可读性好很多

    https://github.com/javan/whenever

    首页上有详细说明

  • 你抽出来以后内存排序就是了,

    首先开启 idendity_map

    @topics = Topic.where("id in (@user.favorite_topic_ids)")
    @user.favorite_topic_ids.each {|id| (@topics_ordered ||=[]) << Topic.find(id)}
    
    
    

    由于开启了 idendity_map,不会有额外的查询

  • ~见楼下~

  • 楼主你应该用FileUtils.rm_rf 这个方法.. 不管是目录还是文件,见啥删啥 看到你这个帖子就想起来上次 github 上著名的删除/usr 事件,哈哈

  • 可以肯定这不是 c...

  • 不错,不过建议楼主可以用 guard-spork,这样一个 guard 可以全包了

    贴一个傻瓜型 Gemfile 带了 guard,livereload 等等一体化自动测试

    require 'rbconfig'
    HOST_OS = RbConfig::CONFIG['host_os']
    source 'http://rubygems.org'
    
    gem 'rails', '3.2.3'
    
    # Gems used only for assets and not required
    # in production environments by default.
    group :assets do
      gem 'sass-rails',   '~> 3.2.3'
      gem 'coffee-rails', '~> 3.2.1'
      gem 'uglifier', '>= 1.0.3'
    end
    
    gem 'jquery-rails'
    gem 'rspec-rails' ,:group => [:development,:test]
    
    # jquery-ui
    # gem 'jquery-ui-rails'
    
    # bootstrap
    # gem 'anjlab-bootstrap-rails', :require => 'bootstrap-rails',:git => 'git://github.com/anjlab/bootstrap-rails.git'
    
    if HOST_OS =~ /linux/i
      gem 'therubyracer', '>= 0.8.2'
    end
    case HOST_OS
      when /darwin/i
        gem 'rb-fsevent', :group => :development
        gem 'growl', :group => :development
        gem 'guard-pow', :group => :development
      when /linux/i
        gem 'libnotify', :group => :development
        gem 'rb-inotify', :group => :development
      when /mswin|windows/i
        gem 'rb-fchange', :group => :development
        gem 'win32console', :group => :development
        gem 'rb-notifu', :group => :development
    end
    
    
    # Use unicorn as the web server
    # gem 'unicorn'
    
    # Deploy with Capistrano
    # gem 'capistrano'
    
    # To use debugger
    # gem 'ruby-debug19', :require => 'ruby-debug'
    
    group :test do
      # Pretty printed test output
      gem 'turn', :require => false
      gem 'factory_girl_rails' , "~> 1.1.0" ,:require => false
      gem 'database_cleaner', ">= 0.6.7"
      gem 'mongoid-rspec', ">= 1.4.4"
      gem "capybara",">= 1.1.1"
      gem "launchy", ">= 2.0.5"
      gem 'guard-spork'
      gem 'spork', '~> 0.9.0'
      gem "guard-rspec"
      gem 'guard-livereload'
      gem 'guard-bundler'
    end
    
    
    
    

    执行guard init 然后按照需要调整 Guardfile,确保 spork 在 rspec 的上面

    # A sample Guardfile
    # More info at https://github.com/guard/guard#readme
    guard 'livereload' do
      watch(%r{app/.+\.(erb|haml)})
      watch(%r{app/helpers/.+\.rb})
      watch(%r{(public/|app/assets).+\.(css|js|html)})
      watch(%r{(app/assets/.+\.css)\.s[ac]ss}) { |m| m[1] }
      watch(%r{(app/assets/.+\.js)\.coffee}) { |m| m[1] }
      watch(%r{config/locales/.+\.yml})
    end
    
    guard 'pow' do
      watch('.powrc')
      watch('.powenv')
      watch('.rvmrc')
      watch('Gemfile')
      watch('Gemfile.lock')
      watch('config/application.rb')
      watch('config/environment.rb')
      watch(%r{^config/environments/.*\.rb$})
      watch(%r{^config/initializers/.*\.rb$})
      watch(%r{^config/settings(\.local)?\.yml$})
    end
    
    guard 'spork', :cucumber_env => { 'RAILS_ENV' => 'test' }, :rspec_env => { 'RAILS_ENV' => 'test' } do
      watch('config/application.rb')
      watch('config/environment.rb')
      watch(%r{^config/environments/.+\.rb$})
      watch(%r{^config/initializers/.+\.rb$})
      watch('spec/spec_helper.rb')
    end
    
    guard 'rspec', :version => 2 ,:cli => "--drb",:notification => true do
      watch(%r{^spec/.+_spec\.rb$})
      watch(%r{^lib/(.+)\.rb$})     { |m| "spec/lib/#{m[1]}_spec.rb" }
      watch('spec/spec_helper.rb')  { "spec/" }
    
      # Rails example
      watch(%r{^spec/.+_spec\.rb$})
      watch(%r{^app/(.+)\.rb$})                           { |m| "spec/#{m[1]}_spec.rb" }
      watch(%r{^lib/(.+)\.rb$})                           { |m| "spec/lib/#{m[1]}_spec.rb" }
      watch(%r{^app/controllers/(.+)_(controller)\.rb$})  { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
      watch(%r{^spec/support/(.+)\.rb$})                  { "spec/" }
      watch('spec/spec_helper.rb')                        { "spec/" }
      watch('config/routes.rb')                           { "spec/routing" }
      watch('app/controllers/application_controller.rb')  { "spec/controllers" }
      # Capybara request specs
      watch(%r{^app/views/(.+)/.*\.(erb|haml)$})          { |m| "spec/requests/#{m[1]}_spec.rb" }
    end
    

    然后参照楼主的文章设置一下 spec_helper.rb

    执行guard即可开始自动测试,自动重启服务,自动 bundle 等等

  • SCSS 對於 & 的判定 at 2012年05月02日

    分两条写吧... css 里不宜多含逻辑

  • 额,hosthunger 阿... 这类 shared 注意内存容易溢出被 kill,并且 app 过一段时间没有请求,进程会被 kill 掉,然后下次访问就要启动,很慢... 嘛玩玩还是可以的..

  • 找个技术合伙人组队 at 2012年05月02日

    敏捷... 个人感觉是炒作远大于实用...

  • Is Node.js Better? at 2012年05月02日

    个人感觉 node.js 在 web 上的优势还是在于两点:

    1. 处理大量持续的 tcp 连接,也就是实时应用,
    2. 能够让前段和后端用同样的代码实现,提高代码复用,尤其对于一些 js 依赖很高的应用,服务器端可以为不支持 js 的浏览器和搜索引擎渲染出静态内容

    目前这个方向的 node 应用框架有不少:比如 http://meteor.com http://derbyjs.com

    而作为传统的 web 框架来使用就没有太大优势了,express 本身比 sinatra 就快不了多少,并且底层库 js 还是远不如 ruby 支持的好

  • #17 楼 @ruohanc 不是嵌套。。是 clear 的问题吧。。有个回复没内容导致的

  • #6 楼 @ywencn 个人觉得用子域名更安全一点

  • 如果规模很大建议拆分子应用,用 engine 处理

  • NodeJS 适合用来做什么? at 2012年04月27日

    http://meteor.com 可以看一下这个。。基于 nodejs 的神奇实时框架,未来的 web app 就该是这个样子

  • 毕业设计选题 at 2012年04月26日

    @liwen_zhang 楼主不如试试 mongodb , js 试试 backbone 之类的 , 总感觉 extjs 太笨重了

    我的经验...用一点老师自己不清楚的东西,往往老师为了撑脸面会给比较高的分数,提问的时候也不会问出尖刻的问题..

  • 毕业设计选题 at 2012年04月26日

    #10 楼 @Rei 这个办法已经被国内的高材生破解了.. 先定一个抄袭比例上限,比如 5% ,用一个隐藏的文本框输入 抄袭字数/5% 长度的无意义文字,于是论文的抄袭比例成功被稀释到了 5%..

  • #7 楼 @skandhas nice~ 非常透彻

  • js 里边,函数本身作为对象,可以这样指定函数的调用环境

    var func = function(){...};
    ...
    func.apply(context,args...);
    
    
    
    

    ruby 里类似的大概只有 instance_eval class_eval 这类函数了,不过也不等效