开源项目 weapon,为已有项目,配置 mina 部署,i18n 定制,rails_settings_ui

seaify · 发布于 2015年07月04日 · 最后由 seaify 回复于 2015年08月25日 · 3751 次阅读
17580
本帖已被设为精华帖!

简介

原帖是写了一个rails application template,但后来发现,rails new myapp -m xx.rb这种形式,并不方便使用,以及不方便已有项目使用,于是将其改造成了weapon,一个gem包,可以自由去选择为已有项目添加什么样的功能。

安装和使用

安装方法: gem install或者添加到gemfile

gem install weapon
chuck@chuck-MacBook-Pro:~/seaify/weapon(master|) % weapon                                                                                        
Commands:
  weapon create_gem          # create basic gem information
  weapon custom_i18n         # custom i18n and use slim as template engine, use simple_form, currently write to zh-CN.yml
  weapon for_seaify          # only for seaify personal use, combine of other commands act as rails application template
  weapon help [COMMAND]      # Describe available commands or one specific command
  weapon install_must_gems   # install must need gems like guard, guard-livereload, guard-rspec...
  weapon push_to_github      # push to github
  weapon setup_mina_unicorn  # setup mina deploy and unicorn server
  weapon setup_settings_ui   # setup settings ui

weapon setup_mina_unicorn

根据提示输入用户名,主机,路径等信息后,会生成unicorn需要使用到的nginx文件, 并且上传到服务器的/etc/nginx/sites-enable目录中 执行完, mina ssh, mina deploy, mina console,mina logs, mina unicorn_logs, mina unicorn:restart 这些就都能正常工作了

weapon create_gem

执行weapon create_gem xxyy, 将会在本地生成一个目录xxyy, 其中包含gem的基本信息,并且会推送到github上,而且会自动发布到rubygems上。目前magicfile这个gem的0.0.1,就是这样生成的。

weapon install_must_gems

执行上述命令后,会将我认为必须的一些列gem安装到当前的rails环境中。

weapon custom_i18n

执行weapon custom_i18n后,会有个错误,需要再手动执行下rails g simple_form:install --bootstrap,这个神奇的问题,顺便在此寻求各位大神帮助!!!

Use `bundle show [gemname]` to see where a bundled gem is installed.
         run  rm app/assets/stylesheets/application.css from "."
         run  rails g simple_form:install --bootstrap from "."
Could not find generator 'simple_form:install'. Maybe you meant 'integration_test' or 'active_record:model' or 'resource_route'
Run `rails generate --help` for more options.
      create  lib/templates/slim/scaffold/_form.html.slim
      create  lib/templates/slim/scaffold/index.html.slim
      create  lib/templates/slim/scaffold/new.html.slim
      create  lib/templates/slim/scaffold/edit.html.slim
      create  lib/templates/slim/scaffold/show.html.slim
      create  lib/templates/rails/i18n_scaffold_controller/controller.rb
      create  lib/generators/rails/i18n_scaffold_controller/i18n_scaffold_controller_generator.rb
      insert  config/application.rb
         run  rails g simple_form:install --bootstrap from "."
Could not find generator 'simple_form:install'. Maybe you meant 'integration_test' or 'active_record:model' or 'resource_route'
Run `rails generate --help` for more options.

安装后,执行rails g scaffold post title:string, 会自动的向config/locales/zh-CN.yml中写入, 会把model中的attribute,自动写入,按activerecord:attribute:model:field这种格式

chuck@website:~/tmp/what(master|) % rails g scaffold post title:string                                                                                 
      invoke  active_record
      create    db/migrate/20150717051311_create_posts.rb
      create    app/models/post.rb
      invoke    test_unit
      create      test/models/post_test.rb
      create      test/fixtures/posts.yml
      invoke  resource_route
       route    resources :posts
      invoke  i18n_scaffold_controller
      create    app/controllers/posts_controller.rb
      invoke    slim
      create      app/views/posts
      create      app/views/posts/index.html.slim
      create      app/views/posts/edit.html.slim
      create      app/views/posts/show.html.slim
      create      app/views/posts/new.html.slim
      create      app/views/posts/_form.html.slim
      invoke    test_unit
      create      test/controllers/posts_controller_test.rb
      invoke    helper
      create      app/helpers/posts_helper.rb
      invoke      test_unit
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/posts.coffee
      invoke    scss
      create      app/assets/stylesheets/posts.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.scss
chuck@website:~/tmp/what(master|) % cat config/locales/zh-CN.yml                                                                                 
---
zh-CN:
  action:
    back: "返回"
    new: "创建"
    show: "查看"
    edit: "编辑"
    delete: "删除"
    confirm_delete: "确认删除"
    created:
      successfully: "创建成功"
    updated:
      successfully: "更新成功"
    destroyed:
      successfully: "删除成功"
  activerecord:
    models:
      post: post
    attributes:
      post:
        title: title
        id: ID
        created_at: "创建时间"
        updated_at: "更新时间"
  helpers:
    submit:
      post:
        create: "创建"
        update: "更新"

同时创建的.html.slim页面都已经使用了i18n, 包括new, edit这些action,在controller里,返回的notice也进行了i18n.

其它

  1. weapon setup_settings_ui, 执行完后,访问http://localhost:3000/settings,就能去设置更新变量了
  2. weapon push_to_github, 执行完后,将当下的代码push到github上去。不用跑到github手动创建repo
共收到 26 条回复
17915

:plus1: :plus1: :plus1:,chuck,你是我们团队提高效率的典范,有你团队效率提高迅速

121

:plus1:

17580

@lyfi2003 @caiqinghua

现在支持mina部署了,会提示输入用户名,host名,目录名,并能创建到github

1107

我过去做过一个rails3.2下的skeleton https://github.com/jasl/a_rails_start_up_omakase 不过已经很久没有更新了

17580

#4楼 @jasl 嗯。看了这个repo,你的startup,要更加细化一些。而我这儿的,登陆系统,设置页面,i18n, mina自动部署,自动建立github,针对的要更加通用一些。

觉得这条,根据application.yml生成nginx、logrotate、init.d、monit配置文件,挺好的。

17522

github那个md有序列表每项要回车一行,还有表格也是。。。神麻烦

17580

#6楼 @dandananddada

感觉github默认的那个markdown语法,还是需要改进下,不少编辑器的markdown要更好,还能画流程图。

mac上的一些编辑器,同样的md文件,在github里和编辑器里就是不一样,神烦。编辑的时候很nice,推上去就发现显示有问题。fuck。

求推荐和github markdown语法完全一直的编辑器,需要支持实时预览,以及vim编辑模式。vim插件的方法我知道就不要推荐了

1

#7楼 @seaify atom editor

96

顶一下楼主的东西,不过实际试了一下,rails new myapp --skip --skip-bundle -m yourfile, 然后说缺terminal-table,装了,然后说缺term-ansicolor,装了,然后说缺rspec-support, 然后说缺listen,然后我就不弄了,等有空弄新项目的时候弄。

17522

#7楼 @seaify 我平时编辑md用的马克飞象,可以和印象笔记同步的,单纯为了实现和github排版相同预览的话,Sublime 有个插件叫Markdown Preview,预览的时候可选择Github选项,效果和Github那边是一样的。不过我现在被逼无奈已经习惯性各种换行了。。。所以就不用Sublime加插件的形式了。。。

17580

#9楼 @femto

你就耐心等待下bundle install哈, --skip --skip-bundle这个去掉是正常的。

如果rails new myapp -m https://raw.githubusercontent.com/seaify/rails-application-templates/master/composer.rb 报错的话,欢迎在https://github.com/seaify/rails-application-templates 提个issue哈

96

@seaify 我是已有项目哈,所以加上 --skip --skip-bundle哈

17580

#12楼 @femto ok,懂了。我后面更新下,支持已有项目,添加这些功能的办法。

17580

@rei 下载了atom editor试用,发现还是和github markdown不一致,同样的md文件,在atom中也显示的很好,github里列表都显示是1, 啊。github在搞飞机啊。

1

#14楼 @seaify 你把这段源码发上来看看。

这也要怪 markdown 有很多行为没官方定义。

1

#16楼 @seaify 列表和列表内容的结构要改成这样:

1. 列表标题

   列表内容

2. 列表标题

   列表内容

3. 列表标题

   列表内容

注意空行和内容前的空格。

17580

#17楼 @rei

非常感谢。之前用过的编辑器,可能都对markdown语法细节上做过些优化,没注意到需要这样写。

17580

#17楼 @rei

尝试编辑的时候,发现那如果列表内容,插入了一段ruby内容,空格怎么处理呢,不是一段文本?

另外我觉得,很多编辑器都能正常显示,不需要空行和内容前的空格。那实际上ruby-china的markdown处理的时候,也能支持到这样吧。

如果时间较多的话,能否给那个readme.md,提个pr, 我看下你是怎么改的。另外h3下的链接也会显示有问题,不在h3后面,就正常

1

#19楼 @seaify 这种标记语言对空格和空行都是很敏感的,我打开你的源码看到 block 和 block 粘在一起就感觉不好了。

原生 makrdown 已经定义了多行 list 的写法,包括多行和带代码的情况,读一读 http://daringfireball.net/projects/markdown/syntax#list

不过原生 markdown 没有三 ` 的用法,是 GFM 添加的。

Ruby China 的 Markdown 也不标准,我也不知如何挽救。

我个人写文章的时候会用 AsciiDoctor,语法更清晰,实现更统一。

3873

#20楼 @rei 列表用markdown一直很头疼...

96

mark 一下

17580

#22楼 @isaaczeng 呀。你也来混ruby了,好久不见哈。

96

#23楼 @seaify 操, 这都被认出来了。 来跟你学 ruby。:-)

17580

#12楼 @femto 这个项目,已经更新了,已gem的形式出现,gem install weapon后,weapon custom_i18n就可以体验了。 @rei 请教大神问题, 这个gem是使用thor的,怎样去用rails application template中的gem, generator这些函数呢? 在thor里,我怎样去获取,当期rails项目下的配置信息呢,比如我想知道设置了哪些locales?

17580

#25楼 @seaify

之前问过这样两个问题,现在自己来解答下。

  1. gem, route这些函数写在Rails::Generators::Actions这个module中,所以直接include,就可以了。
require 'thor'
require 'awesome_print'
require 'rails'
require 'rails/generators/actions'
require 'fileutils'

class Weapon < Thor
  include Thor::Actions
  include Rails::Generators::Actions
  1. thor里获取rails的配置信息 rails的这些运行时信息,配置信息,是rails整个项目初始化后,才有的信息。而rails之外的这些命令是读取不到这些信息的。 可行的办法是,将自己注入到rails中,目前看来就是生成generator,再以rails g generator这种形式去运行,如 ruby rails g grape_entity generate_entity program

rails很好的地方在于,我们可以很方便的按照自己想要的方式去写代码,偷懒。

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