专注于WEB前端开发, 追求更好的用户体验, 更好的开发体验 [长沙前端QQ群:234746733]

2019年7月

  • discourse 插件开发

    / 分类: 开发,实践 / No Comments

    开发discourse插件, 依赖的知识: ES6/SCSS/Ember.js/Rails/handlebars.
    Ember是前端MVVM框架, 支持数据双向绑定/虚拟DOM, 模板引擎使用handlebars, 依赖jQuery(处理DOM兼容性操作), 遵循约定优于配置原则(类似Rails).

    discourse 本地环境搭建

    依赖: ruby, postgres, redis 需要提前安装好.

    • macOS 安装Ruby2.6

      brew install rbenv; rbenv init; rbenv install 2.6.2; # discourse依赖 Ruby 2.5+
    • (推荐) 用docker搭建本地 postgres, redis

      # code db.yml
      version: '3.1'
      services:
        redis:
          container_name: redis
          image: redis:alpine
          ports:
            - "6379:6379"
        postgres:
          container_name: postgres
          image: postgres:9-alpine
          ports:
            - "5432:5432"
          environment:
            - POSTGRES_USER=postgres
            - POSTGRES_PASSWORD=postgres
      # docker-compose up -d -f db.yml # 启动 postgresql/redis
      # docker restart postgres redis # 重启 postgresql/redis
    git clone https://github.com/discourse/discourse.git;
    # git checkout tags/v2.2.4; # 指定某个稳定的版本
    code config/database.yml # 设定 postgres 数据库信息
    development: # 设定正确用户名/密码
      username: name
      password: pass
      host: localhost
    bundle install; # 安装依赖
    bundle exec rake db:create db:migrate; # 创建数据库
    # rails r "SiteSetting.min_password_length=8;SiteSetting.min_admin_password_length=8;" # 设定密码最少8位
    rake admin:create # 创建用户, 输入Email/password/是否管理员
    # rails r "u=User.find_by_email('test@test.com'); u.password='11112222'; u.save!;" # 修改用户密码
    rails s -p 8000 # 启动论坛, 访问 localhost:8000

    创建plugin

    例子: 创建名为 DiscourseTest 的插件

    rails g plugin DiscourseTest # 创建插件, 自动创建以下文件:
    # plugins/discourse-test/README.md
    # plugins/discourse-test/LICENSE # 默认MIT
    # plugins/discourse-test/plugin.rb # 插件后端入口
    # plugins/discourse-test/assets/stylesheets/common/discourse-test.scss
    # plugins/discourse-test/assets/javascripts/initializers/discourse-test.es6 # 插件前端入口
    # plugins/discourse-test/config/settings.yml # 插件配置项
    # plugins/discourse-test/config/locales/client.en.yml # 扩展i18n语言包
    # plugins/discourse-test/config/locales/server.en.yml
    
    # 插件生成器有bug, 生成的js文件名 要手动修改:
    # discourse-test.es6 => discourse-test.js.es6
    
    # 方便 vscode 开发:
    code .gitignore # 增加3行:
    /jsapp/
    /adminjs/
    !/plugins/discourse-test # 插件路径
    
    code .gitmodules # 增加(方便vscode 管理多个插件):
    [submodule "plugins/discourse-test"]
        path = plugins/discourse-test
      url = git@github.com/username/discourse-test.git

    重启discourse后, 管理员登录论坛, 可以在 /admin/plugins 看到已安装的插件: DiscourseTest.
    开发模式: 修改scss页面会自动更新, 修改js文件需刷新页面.

    查看全文 »