Rails mystory 从 Rails 3.2.7 升到 Rails 3.2.11

gazeldx · 2013年02月13日 · 最后由 gazeldx 回复于 2013年03月28日 · 3625 次阅读

我的故事 http://mystory.cc/ 多人博客系统,源代码在: https://github.com/gazeldx/mystory/

rails3.2.7 升到 Rails3.2.11, 改动如下: Gemfile:

gem 'rails', '3.2.11' gem 'sass-rails', '~> 3.2.3'# Sass adapter for the Rails asset pipeline. group :assets do gem 'coffee-rails', '~> 3.2.1'# Coffee Script adapter for the Rails asset pipeline. gem 'uglifier', '>= 1.0.3'# Ruby wrapper for UglifyJS JavaScript compressor end

config/environments/production.log 去掉:config.assets.css_compressor = :scss 如果不去,报错:

ActionView::Template::Error (uninitialized constant Sass::Rails::Compressor (in /root/mystory/app/assets/stylesheets/user.css)): Removing config.assets.css_compressor from your config (this is handled internally by sass-rails) solves the issue. Refer: https://github.com/rails/sass-rails/issues/111

后来 unicorn 启动报错: /usr/local/rvm/gems/ruby-1.9.3-p0@global/gems/bundler-1.0.22/lib/bundler/spec_set.rb:88:in block in materialize': Could not find rake-10.0.3 in any of the sources (Bundler::GemNotFound) from /usr/local/rvm/gems/ruby-1.9.3-p0@global/gems/bundler-1.0.22/lib/bundler/spec_set.rb:82:inmap!' 就把 RVM 也升级了下

$ rvm get stable 装了最新的 Ruby1.9.3-p385, 然后参考https://github.com/gazeldx/mystory/wiki/Nginx 把 Ngnix 和 RVM 配置好,一个小时,升级完成!

今天发现一个 BUG,已经改好了。就是 rails3.2.11 会用 jquery v1.9.0,而.live() 方法在 v1.9.0 中不再支持,改用.on() 就好了 http://api.jquery.com/live/ $('#recommend').live('click', function() {});
should be changed to $('#recommend').on('click', function() {});

你不能换张更好的头像吗?

#2 楼 @hbin 我目前的状态是屌丝一只,这个头像就是我的真实写照。等我不再是屌丝,变高富帅的时候就改掉。

很强大,fork 下来学习学习

虽然是个人开源项目,但是目测已有一些用户。所以,其实我更多关注目前的运营情况及一些数据。

可能别人建议过:UI 啊。

看看看了一下代码,你的 Comment 设计咋不用多态的方式,搞那么多重复的 Model 写起来多费神啊

app/models/blogcomment.rb   
app/models/notecomment.rb   
app/models/postcomment.rb
app/models/memoircomment.rb 
app/models/photocomment.rb

#6 楼 @huacnlee 这是个好建议。小弟这就去改。 现在用户数 400 多,我已经停止运营,任其自由发展。因为为工作太忙了。

#6 楼 @huacnlee 按照你的建议,Some models(Blogcomment,Notecomment,Memoircomment,Photocomment,Postcomment)are dynamic defined in config/initializers/load_dynamic_models.rb

["blog", "memoir", "note", "photo", "post"].each do |name|
  Object.const_set("#{name}comment".capitalize.to_sym,
    Class.new(ActiveRecord::Base) {
      belongs_to name.to_sym
      belongs_to :user
      validates "#{name}_id".to_sym, :presence => true
      validates :user_id, :presence => true
    }
  )

代码改造完了,Test 通过。谢谢! 这次改造让我认清一 RUBY 代码加载方式:用到了才加载。class 还可以动态定义。

gem 'acts_as_commentable'

#8 楼 @gazeldx 不是这样的,你这只是简单的从代码上面减少了。 我指的是这些 Comment 表其实可以合并成一个,从 数据库,Model, Controller, Views 都可以只用一个来实现,具体可以看 Ruby China 的 https://github.com/ruby-china/ruby-china/blob/master/app/models/comment.rb

还有 #9 楼 @SharpX 说的也可以看一下

直接可以让你的代码少很大一堆

belongs_to :commentable, :polymorphic => true

不错,我喜欢

#7 楼 @gazeldx 请教一下……mystory 的 omniauth 是怎么做的…… 我看到有一个 weibo_2 的 gem。但是 QQ 的话,难道都是自己写的?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号