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

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

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

我的问题是:

  • 我应该将所有自定义错误/异常放在哪里?
  • 对于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 [email protected]:myusername/my_lib.git
~/code/my_lib $ git push

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

~/code/my_lib $ rake release

进一步参考

Ruby相关问答推荐

在 Ruby 中,如何编写一个可以与 &:symbol 一起使用的简单方法?

Ruby 和用正则表达式分割字符串

Ruby注入daisy链?

无法在 macos-10.15.6 上Bundle 安装 puma 4.3.5 或 gem puma 与 ruby​​-2.6.6

判断字符串是否包含Ruby数组中的任何子字符串

Rubocop 25 线块大小和 RSpec 测试

Ruby 1.9 哈希,键中有破折号

带有可选参数的方法

如何从 Ruby HEREDOC 中删除前导空格字符?

运行 pod setup 给我“错误的解释器:没有这样的文件或目录”错误

如何从 SystemStackError 中获取回溯:堆栈级别太深?

Ruby:如何计算一个字符串在另一个字符串中出现的次数?

Ruby:获取不带扩展名的文件名

全新安装 RVM 和 Ruby 2.1.1 - dyld 库/路径错误

rbenv、rvm 和 chruby 有什么区别?

`Range#include?` 和 `Range#cover?` 有什么区别?

从字符串中删除所有特殊字符 - ruby

需要必要的库和/或头文件时如何安装 ruby​​-debug

如何使用 Capybara 在下拉菜单中选择选项

JavaScript中Ruby的||=(或等于)?