Gem Homeland - 论坛功能 Rails Engine Gem,全新重构版本发布

huacnlee for Rails Engine Gem · March 25, 2016 · Last by babyhai replied at December 24, 2017 · 5479 hits

我们时常可能需要在各类中小型项目中集成用户社区之类的功能,每次当你需要做这个事情的时候都重头设计实现一遍么?No, that no the Rails way! Rails 教育我们要 DRY!

Homeland 是基于 Rails Engine 实现的论坛社区 Gem,用于快速开发,类似 Devise 给我们解决账号体系的方案一样。它包含数据库、Model、Controller、Views 以及 UI 细节的完整实现,你只需简单几行就能快速在你的现有项目上面集成起来。

功能列表

  • 分类管理
  • 话题发布,管理
  • 回帖

系统依赖

由于内部包含较多复杂功能,Homeland 不得不需要依赖一些三方库,Homeland 尽可能的选用 Ruby 社区流行的 Gem,保持较小的版本依赖。

建议你使用的时候选择目前 homeland.gemspec 里面描述的最佳的三方库版本号。

下面是几个基本的

  • Rails 4.2.x +
  • ActiveRecord 4.2.x +
  • Bootstrap 4 Alpha (当然如果你重写 View 可以不管它)

安装

仅仅需要几步,就能集成到你的任何应用(当然我说的是 Rails + ActiveRecord 的!)。

[提示]: Homeland 的默认配置是增对 Devise 设计的,你可以从配置文件里面看到,很多参数都是 Devise 的默认值。所以我建议大家尽可能的使用 Devise 来配合(如果情况允许的话),否则你需要实现一些必要的参数,详见后面的配置文件说明。

  1. 修改 Gemfile 增加:
# Gemfile
gem "homeland"
gem 'font-awesome-sass-rails'
# 如果你用其他 markup 可以不用依赖 github-markup
gem 'github-markup'

然后直接 bundle install 安装好。

  1. 生成 Homeland 的基本配置文件:
$ rails g homeland:install
  1. 在 routes.rb 里面 mount Homeland:
# config/routes.rb
mount Homeland::Engine, at: "/homeland"

如果你有更高级的需要,可以直接生成出 Homeland 的 Model, Controller, View 文件,然后按自己的需要定制:

$ rails g homeland:models
$ rails g homeland:controllers
$ rails g homeland:views

你也可以通过下面的命令生成默认的 I18n 文件

$ rails g homeland:i18n

实现自己的文章内容格式化

Homeland 默认提供:[:markdown, :simple, :html] 几种可选的内容格式化方式,但某些时候你可能会有更多的需求,需要按自己的需要定制。

Homeland 提供的方式让你达到这个目的。

你需要在 Homeland::Markup 命名空间下面实现一个新的自定义类,并继承 Homeland::Markup::Base,实现 render 函数,例如:

新建文件 lib/homeland/markup/ruby_china.rb

module Homeland
  module Markup
    class RubyChina < Base
      class << self
        def render(raw)
          # 在这里编写你的详细转换实现
          YouCustomRender.render(raw)
        end
      end
    end
  end
end

需改 config/initializes/homeland.rb

Homeland.configure do
  self.markup = :ruby_china
end

然后,Homeland 在转换格式的时候,就会用你的自定义 Markup 来处理了。

Demo App

https://homeland-app.herokuapp.com/homeland/

2016-03-24 15 27 27

项目地址

https://github.com/huacnlee/homeland

赞,正好前几天写了关于基于 engine 重构的文章,也分享下,重构 - 基于 Rails:Engine 的 Rails 网站系统拆分

牛掰啊!

在 Heroku 上面直接基于 test 用的项目部署上了

https://homeland-app.herokuapp.com/

有没有可能将 ruby-china 重构为使用 home-land 的论坛?

#6 楼 @ericguo Ruby China 里面有挺多针对技术网站的设计,Homeland 定位不是这样,需要保持足够的标准,适合各种类型。

所以,我没有做文件上传、没有复杂的内容格式转换,这些留给使用者自己实现

#7 楼 @huacnlee theme 有种 Discourse 味道 😄

谢谢华顺的分享,以后就用 homeland 了

干得漂亮!

Cool。之前就在找上手就能用的 forum engine,各种不爽之下自己写了个哈哈。

很有用的 Engine GEM

我在执行 rails g homeland:install 提示我:

You need to Sign in before reply, if you don't have an account, please Sign up first.