我想创建一个包含10~20个类/文件的小型Ruby项目.我需要一些gem,我想使用RSpec作为测试框架.

我以后可能会想制作一块Ruby ,但这还不确定.

是否有一些操作指南或指南向我展示了如何设置项目的基本 struct ?

我的问题是:

  • 我应该将所有自定义错误/异常放在哪里?
  • 对于lib、bin、src等目录的命名是否有一些约定?
  • 我应该把测试数据或文件放在哪里?
  • 我在哪里需要所有文件,以便在项目中访问它们?

我知道我可以从头开始做任何事情,但我想得到一些指导.有一些好的珍宝我可以复制,但我不确定我真正需要什么,我可以删除什么.

我看了http://gembundler.com/,但在设置Bundler后它停止了.

推荐答案

要获得良好的开端,可以使用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
  • 密码是lib
  • 规格有spec
  • 测试数据或文件共spec/fixtures/
  • 需要lib/my_lib.rb个ruby文件.您也可以在该文件中定义例外,或者在它们自己的文件中定义例外——根据您自己的偏好.
  • C源文件有ext/my_lib
  • shell脚本和可执行文件共有bin

当有疑问时,看看其他Ruby 是如何排列的.


Further information:

您应该在gempec中添加rspec作为开发依赖项,以使其他开发人员更容易进行开发

  1. 编辑我的库.gemspec,在底部附近添加gem.add_development_dependency 'rspec'gem.add_development_dependency 'rake'.
  2. Bundler.setuprequire 'my_lib'添加到等级库/等级库辅助对象的顶部.rb,以确保在运行规范时加载gem依赖项.
  3. require "rspec/core/rake_task"task :default => :spec添加到您的Rakefile,这样运行rake将运行您的规格.

当你在做你的最新作品时,guard-rspec可以节省你的时间和麻烦,因为automatically可以在文件改变时运行你的规格,提醒你规格失败.

~/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"

当你对自己的创作感到满意后,把它推到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

然后,当你准备在Rubygems上发布你的Ruby 时.org,运行rake release,它将 bootstrap 你完成这些步骤.

~/code/my_lib $ rake release

进一步参考

Ruby相关问答推荐

Ruby:程序终止后仅写入/保存/可见的文件数据

当我在 Ruby 中围绕最后一个字符拆分时,如何拆分字符串?

Rb:仅通过在 Ruby 中的类上添加 each 方法,可枚举模块是如何工作的?

Ruby - 获取正在执行的文件

需要在Ruby中将数组拆分为指定大小的子数组

减少哈希值

在 Ruby 中,如何确定字符串是否不在数组中?

如何在Ruby中从字符串中go 除前导和尾随引号

无法在 Heroku 教程中使用 Python 启动工头

有没有比 Rspec 的 `should_receive` 更少干扰的替代方法?

有效的Electron邮件地址正则表达式?

ruby命令在我的 Mac 上没有任何作用

什么时候在 Ruby 中使用 Struct 比使用 Hash 更好?

如何获取从位置 N 到 Ruby 中最后一个字符的子字符串?

Ruby Koan 151 引发异常

为什么 Ruby 无法验证 SSL 证书?

Ruby 异常 - 为什么是else?

Capybara:按值而不是文本 Select 选项

如何判断数组是否有重复项?

严格将字符串转换为整数(或 nil)