Coder Social home page Coder Social logo

electric-it / minimart Goto Github PK

View Code? Open in Web Editor NEW
51.0 51.0 20.0 2.02 MB

MiniMart RubyGem for Chef cookbook mirroring and storage.

License: Apache License 2.0

Ruby 81.98% JavaScript 2.18% CSS 12.13% HTML 3.72%
chef chef-cookbook cookbooks ruby

minimart's People

Contributors

analogj avatar artem-sidorenko avatar berniedurfee-ge avatar edwardbartholomew-ge avatar eyurchenko avatar ge1st avatar jvrplmlmn avatar richardardrichard avatar tapickell avatar waffle-iron avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

minimart's Issues

Cookbook namespacing

Should this be a thing? if so how ???

maybe there should be an option to use a name spaced cookbook like Github repo's forked.

myappleguy/ruby-cookbook
electric-it/ruby-cookbook
ruby-cookbook

  • This was a heated topic at Chef Summit 2015.

unable to download cookbooks with nonstandard versioning conventions

how to reproduce problem:

root@d43d5405d23f:/# minimart mirror --inventory-config=test.yml
Fetching the universe for https://api.berkshelf.com ...
The cookbook erlang with the version 2.1.0 could not be found

this is the inventory file:

root@d43d5405d23f:/# more test.yml
sources:
  - "https://api.berkshelf.com"
cookbooks:
  erlang:
    versions:
      - "2.1"

this particular version actually does exist:
https://supermarket.chef.io/cookbooks/erlang/versions/2.1

also it seems to get confused with this type of versioning:
https://supermarket.chef.io/cookbooks/apache_vhosts/versions/20140110

Always re-downloads cookbooks with path

If you have a cookbook with a file path or git url it will always re-download even if it just got it and there are no changes to it. This seems inefficient and could be better, we can check to see if we already have cookbooks from the super market, why to we skip this check with ones that have a path or git url??

Cookbook with a name containing only digits causes pain

Typically we don't use quotes for cookbook names in inventory.yml file thus having this requirement:
sources:

  • 'https://supermarket.chef.io/'
    cookbooks:
    301:
    versions:
    - '= 0.1.0'
    will lead to a failure to resolve this requirement as this will be added not as a String but as a Fixnum and later Solve won't be able to find this cookbook in the list of all cookbooks available on Supermarket as they are stored as Strings:
    Required artifacts do not exist at the desired version
    Missing artifacts: 301

Encoding issues when generating Minimart HTML

Hi there,

I'm testing minimart and facing the following issue:

Ruby version, gem version, installed gems (minimart 1.2.0) and nodejs version:

vagrant@default-ubuntu-1404:~$ /opt/rubies/2.2.4/bin/ruby --version
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-linux]
vagrant@default-ubuntu-1404:~$ /opt/rubies/2.2.4/bin/gem --version
2.4.5.1
vagrant@default-ubuntu-1404:~$ /opt/rubies/2.2.4/bin/gem list

*** LOCAL GEMS ***

addressable (2.3.8)
bigdecimal (1.2.6)
buff-config (1.0.1)
buff-extensions (1.0.0)
buff-ignore (1.1.1)
buff-ruby_engine (0.1.0)
buff-shell_out (0.2.0)
bundler (1.11.2)
celluloid (0.16.0)
celluloid-io (0.16.2)
chef-config (12.9.38)
concurrent-ruby (1.0.1)
diff-lcs (1.2.5)
domain_name (0.5.20160310)
erubis (2.7.0)
execjs (2.6.0)
faraday (0.9.2)
fuzzyurl (0.8.0)
git (1.3.0)
hashie (3.4.3)
hitimes (1.2.3)
http-cookie (1.0.2)
httpclient (2.8.0)
io-console (0.4.3)
json (1.8.1)
mime-types (2.99.1)
minimart (1.2.0)
minitar (0.5.4)
minitest (5.4.3)
mixlib-authentication (1.4.0)
mixlib-config (2.2.1)
mixlib-log (1.6.0)
mixlib-shellout (2.2.6)
molinillo (0.4.4)
multipart-post (2.0.0)
netrc (0.11.0)
nio4r (1.2.1)
octokit (3.8.0)
power_assert (0.2.2)
psych (2.0.8)
rack (1.6.4)
rake (10.4.2)
rdoc (4.2.0)
redcarpet (3.3.2)
rest-client (1.8.0)
retryable (2.0.3)
ridley (4.5.0)
rspec-core (3.4.4)
rspec-expectations (3.4.0)
rspec-mocks (3.4.1)
rspec-support (3.4.1)
sass (3.4.22)
sawyer (0.6.0)
semverse (1.2.1)
solve (2.0.3)
sprockets (3.6.0)
test-unit (3.0.8)
thor (0.19.1)
tilt (2.0.2)
timers (4.0.4)
uglifier (2.7.2)
unf (0.1.4)
unf_ext (0.0.7.2)
varia_model (0.4.1)
vagrant@default-ubuntu-1404:~$
vagrant@default-ubuntu-1404:~$ nodejs --version
v0.10.44
vagrant@default-ubuntu-1404:~$

Inventory file:

vagrant@default-ubuntu-1404:~$ cat inventory.yml
sources:
  - "https://supermarket.chef.io"
cookbooks:
  nodejs:
    versions:
      - "~> 2.4.4"
vagrant@default-ubuntu-1404:~$

Retrieving the cookbooks to generate the mirror:

vagrant@default-ubuntu-1404:~$ /opt/rubies/2.2.4/bin/minimart mirror --load-deps
Fetching the universe for https://supermarket.chef.io ...
-- Downloading nodejs 2.4.4
-- Downloading yum-epel 0.6.6
-- Downloading yum 3.10.0
-- Downloading build-essential 3.2.0
-- Downloading seven_zip 2.0.0
-- Downloading windows 1.39.2
-- Downloading chef_handler 1.3.0
-- Downloading ark 1.0.1
-- Downloading apt 3.0.0
-- Downloading homebrew 2.1.0
Minimart is done building your inventory!
The inventory can be found in ./inventory
vagrant@default-ubuntu-1404:~$

Trying to generate the endpoint:

vagrant@default-ubuntu-1404:~$ sudo /opt/rubies/2.2.4/bin/minimart web --host=minimart.example.com
Building the cookbook index.
Generating Minimart HTML.
/opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/tilt-2.0.2/lib/tilt/template.rb:85:in `initialize': /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/minimart-1.2.0/lib/../web/templates/dashboard.erb is not valid US-ASCII (Encoding::InvalidByteSequenceError)
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/minimart-1.2.0/lib/minimart/web/template_helper.rb:30:in `new'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/minimart-1.2.0/lib/minimart/web/template_helper.rb:30:in `template'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/minimart-1.2.0/lib/minimart/web/template_helper.rb:17:in `render_template'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/minimart-1.2.0/lib/minimart/web/dashboard_generator.rb:33:in `block in generate_template_content'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/minimart-1.2.0/lib/../web/templates/layout.erb:26:in `block in singleton class'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/minimart-1.2.0/lib/../web/templates/layout.erb:-6:in `instance_eval'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/minimart-1.2.0/lib/../web/templates/layout.erb:-6:in `singleton class'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/minimart-1.2.0/lib/../web/templates/layout.erb:-8:in `__tilt_47167812802960'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/tilt-2.0.2/lib/tilt/template.rb:164:in `call'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/tilt-2.0.2/lib/tilt/template.rb:164:in `evaluate'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/tilt-2.0.2/lib/tilt/template.rb:99:in `render'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/minimart-1.2.0/lib/minimart/web/template_helper.rb:23:in `render_in_base_layout'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/minimart-1.2.0/lib/minimart/web/dashboard_generator.rb:33:in `generate_template_content'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/minimart-1.2.0/lib/minimart/web/dashboard_generator.rb:26:in `generate'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/minimart-1.2.0/lib/minimart/web/html_generator.rb:66:in `generate_index'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/minimart-1.2.0/lib/minimart/web/html_generator.rb:29:in `generate'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/minimart-1.2.0/lib/minimart/commands/web.rb:77:in `generate_html'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/minimart-1.2.0/lib/minimart/commands/web.rb:41:in `execute!'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/minimart-1.2.0/lib/minimart/cli.rb:95:in `web'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
    from /opt/rubies/2.2.4/lib/ruby/gems/2.2.0/gems/minimart-1.2.0/bin/minimart:4:in `<top (required)>'
    from /opt/rubies/2.2.4/bin/minimart:23:in `load'
    from /opt/rubies/2.2.4/bin/minimart:23:in `<main>'
vagrant@default-ubuntu-1404:~$

dont stop downloading cookbooks

can you please give the option to keep downloading either the next version if one is available or the next cookbook in inventory.yml instead of aborting the minimart mirror on the first instance of a failed download?

this is what it looks like when it stops

...
cookbook already installed: swarm-0.2.0.
cookbook already installed: nagios-grid-0.1.1.
cookbook already installed: flyway-0.1.2.
-- Downloading flyway 0.1.3
The cookbook flyway with the version 0.1.0 could not be found

how to specify branch contained /

I have branch create by git flow like feature/xxx
minimart failed to fetch it via branches: with error
/home/vtolstov/.rvm/gems/ruby-1.9.3-p484/gems/git-1.2.9.1/lib/git/lib.rb:917:in `command': git '--git-dir=/tmp/d20150430-5070-1prj1eu' rev-parse 'feature/public_key' 2>&1:fatal: ambiguous argument 'feature/public_key': unknown revision or path not in the working tree. (Git::GitExecuteError)
Use '--' to separate paths from revisions, like this:
'git [...] -- [...]'

Minimart Badges

Hi guys,

Much like the chef supermarket badges you see in a lot of the cookbook repos, I built into web a step to build a badge for the latest cookbook. The badge will link back to a new latest page for that cookbook. Would you guys be interested in a change like this?

I'm using http://shields.io/ to create the badge and I save it back to the site, similar to

badge

I also feel that for the community gem there should be a configuration parameter to enable or disable this feature. But I don't know where to deposit it.

Thoughts?

Migration to ridley 5

Currently minimart uses ridley 4. It would be really nice to have ridley 5 in order to be able to use minimart and berkshelf 5 gems in the same time and on the same ruby env/gemset.

Currently you are forced to use Berkshelf 4 if you want to use minimart. Berkshelf 4 contains couple of bugs, where were fixed in the Berkshelf 5.

berks install issues?

Im running into issues running a berks install against our minimart server. As of today its configured for http and I get the following error

Resolving cookbook dependencies...
Fetching 'testme' from source at .
Fetching cookbook index from http://xxxxxxx...
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/berkshelf-api-client-1.2.1/lib/berkshelf/api_client/connection.rb:67:in block in universe': undefined methodeach' for #String:0x000000013dafa8 (NoMethodError)
from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/berkshelf-api-client-1.2.1/lib/berkshelf/api_client/connection.rb:66:in tap' from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/berkshelf-api-client-1.2.1/lib/berkshelf/api_client/connection.rb:66:inuniverse'
from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/berkshelf-3.2.3/lib/berkshelf/source.rb:22:in build_universe' from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/berkshelf-3.2.3/lib/berkshelf/installer.rb:21:inblock (2 levels) in build_universe'

Dependency handling (chicken and egg)

As I develop a new cookbook I list the dependency cookbook foo in inventory.yml pinning it to a specific version (2.7.1). This finished cookbook I am developing does not go into minimart itself. Then I begin work on another cookbook and add its dependency bar to inventory.yml. bar uses a different version of foo (2.8.0) that explicitly described in inventory.yml so minimart mirror now errors loading bar because it breaks the foo mold. Having to explicitly list go back and edit foo's entry in inventory.yml seems awfully manual and error prone. Are there any alternatives besides listing my original cookbook in minimart or am i missing something?

-- Downloading bar 0.2.0
The dependency foo-2.8.0 could not be installed. This is because a cookbook listed in the inventory depends on a version of 'foo' that does not match the explicit requirements for the 'foo' cookbook.
Build step 'Execute shell' marked build as failure

Gem Release?

Hey guys, I got a jenkins job installing this via rubygems and am lazy and don't want to change it to pull from GH.

Releasing this with the issues_url change would be great.

Git version control

I was wondering if there is currently, or planned for the near future, any of the following features:

  • the ability to track a branch continuously, maintaining and updating all versions by their tags (e.g.: if a branch contains tags v1.0.0, v1.0.5, v1.1.1, maintain all three versions of the cookbook and update the list when a new version/tag is added or when a tag is moved
  • automated housecleaning such that if a cookbook is removed from the inventory.yml file, it is also deleted from the inventory

Thanks!

ruby required version constraint

I'm running into issues when installing the latest version of minimart:

    ...
    Using serverspec 2.35.0
    Using http-cookie 1.0.2
    Using ridley 4.4.2
    Using chef 12.10.24
    Using rest-client 1.8.0
    Using berkshelf 4.0.1
    Installing minimart 1.1.6 (was 1.1.4)

    Gem::InstallError: minimart requires Ruby version ~> 2.1, ~> 2.2.
    An error occurred while installing minimart (1.1.6), and Bundler cannot continue.
    Make sure that `gem install minimart -v '1.1.6'` succeeds before bundling.
    automation_scripts kulatung$ ruby --version
    ruby 2.1.8p440 (2015-12-16 revision 53160) [x86_64-darwin13.0]

Any idea what's going on?

Test Suite Refactor

This is for refactoring the test suite so it is more consistent and easier to develop with.

One of the pain points is the use of VCR in inventory_builder_spec.rb that fails sometimes on Travis ut passes sometimes locally and fails sometimes locally.

This could be much better.

Syncing from git

When attempting to sync a cookbook from git (using the example given in README.md), I receive the following error message:

/var/lib/gems/1.9.1/gems/git-1.2.6/lib/git/base.rb:335:in fetch': wrong number of arguments (2 for 1) (ArgumentError) from /home/minimart/.gem/ruby/1.9.1/gems/minimart-1.0.2/lib/minimart/download/git_repository.rb:23:inblock in fetch'
from /usr/lib/ruby/1.9.1/tmpdir.rb:83:in mktmpdir' from /home/minimart/.gem/ruby/1.9.1/gems/minimart-1.0.2/lib/minimart/download/git_repository.rb:21:infetch'
from /home/minimart/.gem/ruby/1.9.1/gems/minimart-1.0.2/lib/minimart/inventory_requirement/git_requirement.rb:70:in download_cookbook' from /home/minimart/.gem/ruby/1.9.1/gems/minimart-1.0.2/lib/minimart/inventory_requirement/base_requirement.rb:45:infetch_cookbook'
from /home/minimart/.gem/ruby/1.9.1/gems/minimart-1.0.2/lib/minimart/mirror/inventory_builder.rb:43:in block in install_cookbooks_with_explicit_location' from /home/minimart/.gem/ruby/1.9.1/gems/minimart-1.0.2/lib/minimart/mirror/inventory_requirements.rb:31:incall'
from /home/minimart/.gem/ruby/1.9.1/gems/minimart-1.0.2/lib/minimart/mirror/inventory_requirements.rb:31:in block in each_with_explicit_location' from /home/minimart/.gem/ruby/1.9.1/gems/minimart-1.0.2/lib/minimart/mirror/inventory_requirements.rb:26:ineach'
from /home/minimart/.gem/ruby/1.9.1/gems/minimart-1.0.2/lib/minimart/mirror/inventory_requirements.rb:26:in each' from /home/minimart/.gem/ruby/1.9.1/gems/minimart-1.0.2/lib/minimart/mirror/inventory_requirements.rb:30:ineach_with_explicit_location'
from /home/minimart/.gem/ruby/1.9.1/gems/minimart-1.0.2/lib/minimart/mirror/inventory_builder.rb:42:in install_cookbooks_with_explicit_location' from /home/minimart/.gem/ruby/1.9.1/gems/minimart-1.0.2/lib/minimart/mirror/inventory_builder.rb:26:inbuild!'
from /home/minimart/.gem/ruby/1.9.1/gems/minimart-1.0.2/lib/minimart/commands/mirror.rb:26:in execute!' from /home/minimart/.gem/ruby/1.9.1/gems/minimart-1.0.2/lib/minimart/cli.rb:56:inmirror'
from /home/minimart/.gem/ruby/1.9.1/gems/thor-0.19.1/lib/thor/command.rb:27:in run' from /home/minimart/.gem/ruby/1.9.1/gems/thor-0.19.1/lib/thor/invocation.rb:126:ininvoke_command'
from /home/minimart/.gem/ruby/1.9.1/gems/thor-0.19.1/lib/thor.rb:359:in dispatch' from /home/minimart/.gem/ruby/1.9.1/gems/thor-0.19.1/lib/thor/base.rb:440:instart'
from /home/minimart/.gem/ruby/1.9.1/gems/minimart-1.0.2/bin/minimart:4:in <top (required)>' from /home/minimart/.gem/ruby/1.9.1/bin/minimart:19:inload'
from /home/minimart/.gem/ruby/1.9.1/bin/minimart:19:in `

'

The problem is resolved by removing the second argument from the fetch call on line 23 in /home/minimart/.gem/ruby/1.9.1/gems/minimart-1.0.2/lib/minimart/download/git_repository.rb ("tags: true"). This is because the fetch function in /var/lib/gems/1.9.1/gems/git-1.2.6/lib/git/base.rb only accepts 0 or 1 argument.

I'm kind of a Ruby noob (also in general), so figured I'd just post this as an issue with how I managed to fix it and let you guys look at it more closely since I'm sure I missed something obvious...

Need to add a license to this project

Hello!

This looks great, thank you for creating this project, and with such a nice looking home page!

The site indicates that this project is open source, but the license is not indicated there. Nor does the toplevel of the repository include a LICENSE or LICENSE.txt, and the gemspec "license" field is empty.

(The home page is empty too, it should probably point to http://electric-it.github.io/minimart/.)

Publish 1.1.0 gem please

Please publish the 1.1.0 release of this gem so it's easily installable using 'gem install minimart'.

Thanks

Source and issues links in cookbook detail

Hi guys, great project, thanks for making it.

Would you be amiable for a PR to expose the issues_url and source_url in the cookbook details page (as per the metadata docs)? It would be helpful for our team.

support for incremental updates to inventory

We have a few hundred cookbooks stored in git (with almost 4000 tagged versions) which minimart handles pretty easily.

We manage our cookbooks using a continuous deployment pipeline which tests, version bumps, tags, commits to git and uploads our cookbooks to a chef-server automatically on pull requests. We're trying to replace our chef-server/berkshelf-api with minimart deployed to s3.

It would be amazing if we could just kick off a minimart mirror command after updating the inventory.yml file. The problem is that the mirror command seems to fetch all the cookbooks again, even if they already exist in the inventory/cache. With ~4000 cookbooks, this means we can't just replace our chef-server upload step with a minimart deploy.

How difficult would it be to have minimart check for the presence of cookbooks in the inventory directory, and then skip them during the fetch phase?

(ExecJS::RuntimeUnavailable)

Hello,

When running the "minimart mirror" command after installing minimart Gem version 1.2.3 I get the following error

[vagrant@centos minimart]$ minimart mirror
/opt/chef/embedded/lib/ruby/gems/2.1.0/gems/execjs-2.7.0/lib/execjs/runtimes.rb:58:in `autodetect': Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
        from /opt/chef/embedded/lib/ruby/gems/2.1.0/gems/execjs-2.7.0/lib/execjs.rb:5:in `<module:ExecJS>'
        from /opt/chef/embedded/lib/ruby/gems/2.1.0/gems/execjs-2.7.0/lib/execjs.rb:4:in `<top (required)>'
        from /opt/chef/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /opt/chef/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /opt/chef/embedded/lib/ruby/gems/2.1.0/gems/uglifier-3.0.0/lib/uglifier.rb:5:in `<top (required)>'
        from /opt/chef/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /opt/chef/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /opt/chef/embedded/lib/ruby/gems/2.1.0/gems/minimart-1.2.3/lib/minimart/web/html_generator.rb:3:in `<top (required)>'
        from /opt/chef/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /opt/chef/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /opt/chef/embedded/lib/ruby/gems/2.1.0/gems/minimart-1.2.3/lib/minimart/web.rb:6:in `<module:Web>'
        from /opt/chef/embedded/lib/ruby/gems/2.1.0/gems/minimart-1.2.3/lib/minimart/web.rb:4:in `<module:Minimart>'
        from /opt/chef/embedded/lib/ruby/gems/2.1.0/gems/minimart-1.2.3/lib/minimart/web.rb:1:in `<top (required)>'
        from /opt/chef/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /opt/chef/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /opt/chef/embedded/lib/ruby/gems/2.1.0/gems/minimart-1.2.3/lib/minimart.rb:10:in `<module:Minimart>'
        from /opt/chef/embedded/lib/ruby/gems/2.1.0/gems/minimart-1.2.3/lib/minimart.rb:4:in `<top (required)>'
        from /opt/chef/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:68:in `require'
        from /opt/chef/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:68:in `require'
        from /opt/chef/embedded/lib/ruby/gems/2.1.0/gems/minimart-1.2.3/lib/minimart/cli.rb:3:in `<top (required)>'
        from /opt/chef/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:68:in `require'
        from /opt/chef/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:68:in `require'
        from /opt/chef/embedded/lib/ruby/gems/2.1.0/gems/minimart-1.2.3/bin/minimart:3:in `<top (required)>'
        from /opt/chef/embedded/bin/minimart:22:in `load'
        from /opt/chef/embedded/bin/minimart:22:in `<main>'
[vagrant@centos minimart]$

The O/S is CentOS 6.7
Ruby version ruby 2.1.8p440 (2015-12-16 revision 53160) [x86_64-linux](supplied with Chef)

Are we missing a Gem or need a specific version of Ruby?

If I roll back to Minimart 1.2.0 I get the following error

ERROR:  Error installing minimart:   minimart requires Ruby version ~> 2.1, ~> 2.2.

Which is what I think Minimart 1.2.3 fixes #47

We are currently using minimart version 1.1.3 but often have pain installing the dep-selector-libgecode gem as it takes a long time building native extensions, the later versions of Minimart do not appear to need this Gem, is that correct?

Thanks in advance.

Minify CSS and JS in HTMLGenerator

Just an idea that could simplify things a bit.

Currently we have rake tasks compile_js and compile_css
https://github.com/electric-it/minimart/blob/master/Rakefile#L18-L44
That will uglify and minify the JS and CSS files from the _assets dir to the assets dir.
In the HTMLGenerator class we are copying those assets over into the web directory as part of the static site creation.
https://github.com/electric-it/minimart/blob/master/lib/minimart/web/html_generator.rb#L34

It seems like this may be a good place to have it minify & uglify the CSS and JS files for us during the site generation process instead of relying on the rake task.

What do you think @richardardrichard @ge1st @berniedurfee-ge

UI Issue: Page Numbers

Have 30 cookbooks in minimart and at 10 on a page, that should be 3 pages. However UI shows a 4th page which is blank.
screen shot 2015-05-27 at 4 07 26 pm

Minimart crashes when trying to download 'bad' cookbook

If Minimart tries to download a cookbook that is 'broken' then the whole process stops not allowing other cookbooks to be downloaded. Probably it's by design but in our case it represented a problem when we tried to mirror bunch of cookbooks off https://supermarket.chef.io .
Example:
-- Downloading sphinx 0.6.0
_opt_minimart: #<Zlib::GzipFile::Error: not in gzip format, input="sphinx

In our case desired behavior would be to log the error/warning and proceed with other cookbooks.

Add option to skip dependency checks

I found this software the other day and it's a really nice alternative to supermarket. Thanks for taking the time to write this.
One option I believe would be helpful for my use case is an option to skip the cookbook dependency resolution. I'd like to be able to add all of the cookbooks and their specified versions to the inventory without worrying about if a cookbook dependency is missing. That missing dependency is actually provided by another external cookbook source which I don't want to make available on minimart.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.