ayc*_*ter 99 ruby project-structure
我想用10-20个类/文件创建一个小的ruby项目.我需要一些宝石,我想使用rspec作为测试框架.
我可能想稍后建立一个宝石,但这不确定.
是否有一些Howto或Guide向我展示了如何设置项目的基本结构?
我的问题是:
我知道我可以从头做一切,但我想要一些指导.我可以复制一些好的宝石,但我不确定我真正需要什么以及我可以删除什么.
我查看了http://gembundler.com/,但在设置捆绑器后它停止了.
Joh*_*hat 153
要获得良好的开端,您可以使用bundle gem
命令和rspec --init
.
~/code $ bundle gem my_lib
create my_lib/Gemfile
create my_lib/Rakefile
create my_lib/LICENSE.txt
create my_lib/README.md
create my_lib/.gitignore
create my_lib/my_lib.gemspec
create my_lib/lib/my_lib.rb
create my_lib/lib/my_lib/version.rb
Initializating git repo in /Users/john/code/my_lib
~/code $ cd my_lib/
~/code/my_lib $ git commit -m "Empty project"
~/code/my_lib $ rspec --init
The --configure option no longer needs any arguments, so true was ignored.
create spec/spec_helper.rb
create .rspec
Run Code Online (Sandbox Code Playgroud)
lib
spec
spec/fixtures/
lib/my_lib.rb
.您也可以根据自己的喜好定义文件的异常,也可以在自己的文件中定义.ext/my_lib
bin
如果有疑问,只需看看其他宝石是如何布局的.
更多的信息:
您应该在gemspec中添加rspec作为开发依赖项,以便其他开发人员更轻松
gem.add_development_dependency 'rspec'
并gem.add_development_dependency 'rake'
靠近底部.Bundler.setup
和require 'my_lib'
以投机/ spec_helper.rb的顶部,以确保您的gem依赖加载当您运行规范.require "rspec/core/rake_task"
和task :default => :spec
你的Rake文件,这样运行rake
将运行规范.当您正在进行最新的创作时,guard-rspec可以通过在文件更改时自动运行您的规范来节省您的时间和麻烦,提醒您注意规格失败.
~/code/my_lib $ git add spec/spec_helper.rb
~/code/my_lib $ git commit -am "Add RSpec"
~/code/my_lib $ vim my_lib.gemspec # add guard development dependency
~/code/my_lib $ bundle
~/code/my_lib $ bundle exec guard init
~/code/my_lib $ vim Guardfile # Remove the sections below the top one
~/code/my_lib $ git add Guardfile
~/code/my_lib $ git commit -am "Add Guard"
Run Code Online (Sandbox Code Playgroud)
在你对你的创作感到满意之后,把它推到github
# create a github repository for your gem, then push it up
~/code/my_lib $ curl -u myusername https://api.github.com/user/repos -d '{"name":"my_lib"}'
~/code/my_lib $ git remote add origin git@github.com:myusername/my_lib.git
~/code/my_lib $ git push
Run Code Online (Sandbox Code Playgroud)
然后,当您准备好在Rubygems.org上发布您的gem时,运行rake release
,它将引导您完成这些步骤.
~/code/my_lib $ rake release
Run Code Online (Sandbox Code Playgroud)
进一步的参考
Mat*_*ira 11
rubygems.org上有一些很好的指南,它们将向您介绍其中一些惯例及其背后的原因.通常,大多数Ruby开发人员都遵循Rubygems命名和目录约定.
如果我无法在标准库中找到任何符合错误描述的类,我只会创建自定义异常类.将您的错误类嵌套在引发它的类或模块下:
class Parser::Error < RuntimeError; end
begin
Parser.new(:invalid).parse!
rescue Parser::Error => e
puts e.message
end
Run Code Online (Sandbox Code Playgroud)
单元测试去任何进入/test
,如果你使用Test::Unit
,或进入/spec
如果你使用RSpec
.我推荐后者.
Bundler
是管理负载路径的好方法.它将自动设置您的环境,只包含指定的依赖项Gemfile
和可选的gemspec
.它还允许您轻松地require
编写代码,而不会使其成为宝石.
但是,由于您将来可能会将代码捆绑在gem中,因此我建议您研究如何创建gem规范.您应该手动编写规范.不要使用某种工具自动生成它 - 在我看来,它们是蛮力的方法,在与源代码控制一起使用时会不必要地复制信息并造成严重破坏.
我创建了一个你可能觉得有用的宝石.给定一个gemspec
文件,它定义了许多Rake
用于处理gem的有用任务,其中包括使用自动版本标记构建,安装和释放gem rubygems
以及git
存储库的任务.它还提供了一种简单的方式来加载在你的代码irb
或pry
会话.
# Rakefile
require 'rookie'
# Run `rake -T` for the complete task list
Rookie::Tasks.new('your_gem.gemspec').define_tasks!
Run Code Online (Sandbox Code Playgroud)
以下是我最常见的约定(假设您的项目名称为"foo"):
在lib /中,约定通常是为顶级命名空间中的每个子命名空间创建一个文件夹.例如,类Foo :: Bar :: Baz通常位于/lib/foo/bar/baz.rb下.
有些人喜欢创建一个/lib/foo/version.rb文件来设置Foo :: VERSION常量,但我经常在/lib/foo.rb文件中看到这个.
此外,如果您要创建gem,则需要以下文件:
互联网上有一些有关如何构建Ruby项目的指南。此外,我认为解决此问题的最佳方法是前往github并寻找一些著名的Ruby项目,并检查“其”结构。
除了一般的红宝石要求外,我还建议使用以下工具来改善工作流程:
package
:构建宝石包clean
:清除生成的文件test
:运行测试除了上述所有工具外,它们还是针对ruby项目的一些在线服务:
您甚至可以通过http://shields.io/为您的开源项目生成徽章。
那是我的经验,希望能对您有所帮助。
归档时间: |
|
查看次数: |
45470 次 |
最近记录: |