Skip to content

Commit

Permalink
Add default Gem files
Browse files Browse the repository at this point in the history
  • Loading branch information
snickell committed Aug 8, 2024
1 parent 90c90b3 commit 2e2ea2b
Show file tree
Hide file tree
Showing 15 changed files with 251 additions and 8 deletions.
27 changes: 27 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Ruby

on:
push:
branches:
- main

pull_request:

jobs:
build:
runs-on: ubuntu-latest
name: Ruby ${{ matrix.ruby }}
strategy:
matrix:
ruby:
- '3.0.6'

steps:
- uses: actions/checkout@v2
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
- name: Run the default task
run: bundle exec rake
13 changes: 12 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,13 @@
# Python
.venv
.pdm-build
.pdm-build

# Gem
/.bundle/
/.yardoc
/_yardoc/
/coverage/
/doc/
/pkg/
/spec/reports/
/tmp/
13 changes: 13 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
AllCops:
TargetRubyVersion: 2.6

Style/StringLiterals:
Enabled: true
EnforcedStyle: double_quotes

Style/StringLiteralsInInterpolation:
Enabled: true
EnforcedStyle: double_quotes

Layout/LineLength:
Max: 120
20 changes: 15 additions & 5 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,19 @@
source 'https://rubygems.org'
# frozen_string_literal: true

source "https://rubygems.org"

# Specify your gem's dependencies in pycall_thread.gemspec
gemspec

gem "rake", "~> 13.0"
gem "minitest", "~> 5.0"
gem "rubocop", "~> 1.21"


# Include Puma for testing examples:
gem 'puma', '~> 6.4.1'

# To use the local path, you must also run things with:
# bundle exec ruby -I/Users/seth/src/pycall.rb/ext/pycall
#
# gem 'pycall', path: '/Users/seth/src/pycall.rb', require: false

gem 'pycall'
gem 'puma', '~> 6.4.1'
# gem 'pycall', path: '/Users/seth/src/pycall.rb', require: false
43 changes: 41 additions & 2 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,17 +1,56 @@
PATH
remote: .
specs:
pycall_thread (0.1.0)
pycall

GEM
remote: https://rubygems.org/
specs:
ast (2.4.2)
json (2.7.2)
language_server-protocol (3.17.0.3)
minitest (5.24.1)
nio4r (2.7.3)
parallel (1.26.0)
parser (3.3.4.2)
ast (~> 2.4.1)
racc
puma (6.4.2)
nio4r (~> 2.0)
pycall (1.5.2)
racc (1.8.1)
rainbow (3.1.1)
rake (13.2.1)
regexp_parser (2.9.2)
rexml (3.3.4)
strscan
rubocop (1.65.1)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 2.4, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.31.1, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.32.0)
parser (>= 3.3.1.0)
ruby-progressbar (1.13.0)
strscan (3.1.0)
unicode-display_width (2.5.0)

PLATFORMS
arm64-darwin-23

DEPENDENCIES
minitest (~> 5.0)
puma (~> 6.4.1)
pycall
pycall_thread!
rake (~> 13.0)
rubocop (~> 1.21)

BUNDLED WITH
2.3.22
2.2.33
35 changes: 35 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# PycallThread

Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/pycall_thread`. To experiment with that code, run `bin/console` for an interactive prompt.

TODO: Delete this and the text above, and describe your gem

## Installation

Add this line to your application's Gemfile:

```ruby
gem 'pycall_thread'
```

And then execute:

$ bundle install

Or install it yourself as:

$ gem install pycall_thread

## Usage

TODO: Write usage instructions here

## Development

After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/pycall_thread.
16 changes: 16 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# frozen_string_literal: true

require "bundler/gem_tasks"
require "rake/testtask"

Rake::TestTask.new(:test) do |t|
t.libs << "test"
t.libs << "lib"
t.test_files = FileList["test/**/*_test.rb"]
end

require "rubocop/rake_task"

RuboCop::RakeTask.new

task default: %i[test rubocop]
15 changes: 15 additions & 0 deletions bin/console
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/usr/bin/env ruby
# frozen_string_literal: true

require "bundler/setup"
require "pycall_thread"

# You can add fixtures and/or initialization code here to make experimenting
# with your gem easier. You can also use a different console, if you like.

# (If you use this, don't forget to add pry to your Gemfile!)
# require "pry"
# Pry.start

require "irb"
IRB.start(__FILE__)
8 changes: 8 additions & 0 deletions bin/setup
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'
set -vx

bundle install

# Do any other automated setup that you need to do here
File renamed without changes.
5 changes: 5 additions & 0 deletions lib/pycall_thread/version.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# frozen_string_literal: true

module PycallThread
VERSION = "0.1.0"
end
41 changes: 41 additions & 0 deletions pycall_thread.gemspec
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# frozen_string_literal: true

require_relative "lib/pycall_thread/version"

Gem::Specification.new do |spec|
spec.name = "pycall_thread"
spec.version = PycallThread::VERSION
spec.authors = ["Seth Nickell"]
spec.email = ["[email protected]"]

spec.summary = "Use PyCall in a thread-safe way from Rails or Puma"
spec.description = "PyCall is not thread-safe, but this gem provides a way to run all PyCall code in the same thread."
spec.homepage = "https://github.com/snickell/pycall_thread"
spec.required_ruby_version = ">= 2.6.0"

spec.metadata["allowed_push_host"] = "https://rubygems.org"

spec.metadata["homepage_uri"] = spec.homepage
spec.metadata["source_code_uri"] = spec.homepage

spec.license = "MIT"

spec.add_dependency "pycall"

# Specify which files should be added to the gem when it is released.
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
spec.files = Dir.chdir(File.expand_path(__dir__)) do
`git ls-files -z`.split("\x0").reject do |f|
(f == __FILE__) || f.match(%r{\A(?:(?:test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
end
end
spec.bindir = "exe"
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
spec.require_paths = ["lib"]

# Uncomment to register a new dependency of your gem
# spec.add_dependency "example-gem", "~> 1.0"

# For more information and examples about making a new gem, checkout our
# guide at: https://bundler.io/guides/creating_gem.html
end
4 changes: 4 additions & 0 deletions sig/pycall_thread.rbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module PycallThread
VERSION: String
# See the writing guide of rbs: https://github.com/ruby/rbs#guides
end
13 changes: 13 additions & 0 deletions test/pycall_thread_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# frozen_string_literal: true

require "test_helper"

class PycallThreadTest < Minitest::Test
def test_that_it_has_a_version_number
refute_nil ::PycallThread::VERSION
end

def test_it_does_something_useful
assert false
end
end
6 changes: 6 additions & 0 deletions test/test_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# frozen_string_literal: true

$LOAD_PATH.unshift File.expand_path("../lib", __dir__)
require "pycall_thread"

require "minitest/autorun"

0 comments on commit 2e2ea2b

Please sign in to comment.