Giter VIP home page Giter VIP logo

puppet-ruby's Introduction

Ruby Puppet Module for Boxen

Build Status

Requires the following boxen modules:

  • boxen >= 3.2.0
  • repository >= 2.1
  • autoconf (some ruby versions)
  • openssl (ruby versions >= 2.0.0)
  • gcc (ruby versions <= 1.8.7)
  • ripienaar/puppet-module-data

About

This module supports ruby version management with either rbenv or chruby. All ruby versions are installed into /opt/rubies.

About ruby-build version

Occasional bumps to the default ruby-build version are fine, on this module, but not essential. The ruby-build version is something you should be managing in your own boxen repository, rather than depending on this module to update for you. See examples on how to change the ruby-build version in the Hiera section.

You can find a release list of versions for ruby-build here.

Breakages since last major version

  • ruby::global does not work with chruby
  • bundler is no longer installed by default
  • rubies now live in /opt/rubies instead of /opt/boxen/rbenv/versions
  • the module-data module is now required

Usage

# Set the global default ruby (auto-installs it if it can)
class { 'ruby::global':
  version => '2.4.0'
}

# ensure a certain ruby version is used in a dir
ruby::local { '/path/to/some/project':
  version => '2.4.0'
}

# ensure a gem is installed for a certain ruby version
# note, you can't have duplicate resource names so you have to name like so
$version = "2.4.0"
ruby_gem { "bundler for ${version}":
  gem          => 'bundler',
  version      => '~> 1.2.0',
  ruby_version => $version,
}

# ensure a gem is installed for all ruby versions
ruby_gem { 'bundler for all rubies':
  gem          => 'bundler',
  version      => '~> 1.0',
  ruby_version => '*',
}

# install a ruby version
ruby::version { '2.4.0': }

# Installing rbenv plugin
ruby::rbenv::plugin { 'rbenv-vars':
  ensure => 'v1.2.0',
  source  => 'sstephenson/rbenv-vars'
}

# Run an installed gem
exec { '/opt/rubies/2.4.0/bin/bundle install':
  cwd     => "~/src/project",
  require => Ruby_Gem['bundler for 2.4.0']
}

Hiera configuration

The following variables may be automatically overridden with Hiera:

---

"ruby::provider": "chruby"
"ruby::user": "deploy"

"ruby::build::ensure": "v20161225"
"ruby::chruby::ensure": "v0.3.9"
"ruby::rbenv::ensure": "v1.1.0"

# rbenv plugins
"ruby::rbenv::plugins":
  "rbenv-gem-rehash":
    "ensure": "v1.0.0"
    "source": "sstephenson/rbenv-gem-rehash"

# Environment variables for building specific versions
# You'll want to enable hiera's "deeper" merge strategy
# See http://docs.puppetlabs.com/hiera/1/configuring.html#mergebehavior
"ruby::version::env":
  "1.9.3-gentoo":
    "CC": "llvm"
    "CFLAGS": "-O9 -funroll-loops"
  "2.0.0-p0":
    "CC": "gcc"

# Version aliases, commonly used to bless a specific version
# Use the "deeper" merge strategy, as with ruby::version::env
"ruby::version::alias":
  "1.9.3": "1.9.3-p484"
  "2.0.0": "2.0.0-github"
  "2.0.0-github": "2.0.0-github6"

It is required that you include ripienaar/puppet-module-data in your boxen project, as this module now ships with many pre-defined versions and aliases in the data/ directory. With this module included, those definitions will be automatically loaded, but can be overridden easily in your own hierarchy.

You can also use JSON if your Hiera is configured for that.

puppet-ruby's People

Contributors

cdenneen avatar createdbypete avatar davejachimiak avatar dbussink avatar dgoodlad avatar fromonesrc avatar grosser avatar jacobbednarz avatar jbarnette avatar jhaals avatar johnsyweb avatar lsylvester avatar lucasmazza avatar mikemcquaid avatar mislav avatar mnussbaum avatar moox avatar n0ts avatar nhocki avatar nickpellant avatar orien avatar petems avatar rafaelfranca avatar rodjek avatar salimane avatar seanknox avatar tarebyte avatar tedkulp avatar timtim123456 avatar wfarr 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

puppet-ruby's Issues

Problem running bundler commands: hub alias: unknown shell

I'm trying to run bundler commands within a Rails app but getting a "hub alias: unknown shell" error on anything except bundle install.

Using the example on the puppet-ruby README, I can successfully run bundle install:

  ## Run bundle install
  exec { "bundle install app":
    provider => 'shell',
    command => "env -i bash -c 'source /opt/boxen/env.sh && RBENV_VERSION=${ruby_version} bundle install'"
    cwd => "${boxen::config::srcdir}/app",
    require => [
      Ruby::Gem["bundler for ${ruby_version}"],
      Service['postgresql']
    ],
    timeout => 1800
  }

However if I try to run a different command, running 'bundle check' via an unless:

  unless => "env -i bash -c 'source /opt/boxen/env.sh && RBENV_VERSION=${dabo_ruby_version} bundle check'"

I get a "hub alias: unknown shell" error.

Debug: Exec[bundle install app](provider=shell): Executing check '["/bin/sh", "-c", "env -i bash -c 'source /opt/boxen/env.sh && RBENV_VERSION=2.0.0-p353 bundle check'"]'
Debug: Executing '/bin/sh -c env -i bash -c 'source /opt/boxen/env.sh && RBENV_VERSION=2.0.0-p353 bundle check''
Debug: /Stage[main]/Projects::App/Exec[bundle install app]/unless: hub alias: unknown shell
Debug: /Stage[main]/Projects::App/Exec[bundle install app]/unless: The Gemfile's dependencies are satisfied

Strangely enough, bundler is reporting that dependencies are satisfied when I know they're not, so perhaps a different bundler than I think is being executed. Any help would be appreciated.

Class[Ruby::Global] Warnings on variable ruby::user and ruby::rbenv_root

I'm getting this warnings when I run boxen. Any idea how to get rid of them?

Warning: Scope(Class[Ruby::Global]): Could not look up qualified variable 'ruby::user'; class ruby has not been evaluated
Warning: Scope(Class[Ruby::Global]): Could not look up qualified variable 'ruby::rbenv_root'; class ruby has not been evaluated

How to make sure the last version of a gem is installed?

I used this,

ruby::gem { 'negroku for 1.9.3-p392':
    gem     => 'negroku',
    ruby    => '1.9.3-p392',
    version => '~> 1.1.2'
}

I want to install all versions above 1.1.2 but not 1.2 so I used ~> 1.1.2

But higher version doesn't get installed, like 1.1.3 or 1.1.4.
I had to manually update my manifest to add 1.1.4 when I needed it.

I'm doing something wrong? or the rbenv_gem provider is not accepting the versions like is shown on http://docs.rubygems.org/read/chapter/16

thansk

Failed ruby-build runs leave broken installs behind

If ruby-build fails, in can leave the target version's directory behind with openssl and libyaml but no ruby. This causes the ruby provider to believe that the version is installed on future runs, which makes for all sorts of odd issues.

Error when upgrading to module 4.1.0

I've updated my Puppetfile to ruby 4.1.0, then run the for-rbenv-versions scripts on the this gist to uninstall my 1.9.3 and 2.0.0 rubies.

Now when I run boxen I'm getting this

Boxen has a dirty tree, won't auto-update!
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1414:in `fu_each_src_dest0': undefined method `to_str' for nil:NilClass (NoMethodError)
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1400:in `fu_each_src_dest'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:423:in `cp_r'
    from /opt/boxen/repo/.bundle/ruby/1.8/gems/librarian-puppet-0.9.9/lib/librarian/puppet/source/githubtarball.rb:60:in `install_version!'
    from /opt/boxen/repo/.bundle/ruby/1.8/gems/librarian-puppet-0.9.9/lib/librarian/puppet/source/githubtarball.rb:208:in `install!'
    from /opt/boxen/repo/.bundle/ruby/1.8/gems/librarian-puppet-0.9.9/vendor/librarian/lib/librarian/manifest.rb:89:in `install!'
    from /opt/boxen/repo/.bundle/ruby/1.8/gems/librarian-puppet-0.9.9/vendor/librarian/lib/librarian/action/install.rb:49:in `install_manifests'
    from /opt/boxen/repo/.bundle/ruby/1.8/gems/librarian-puppet-0.9.9/vendor/librarian/lib/librarian/action/install.rb:48:in `each'
    from /opt/boxen/repo/.bundle/ruby/1.8/gems/librarian-puppet-0.9.9/vendor/librarian/lib/librarian/action/install.rb:48:in `install_manifests'
    from /opt/boxen/repo/.bundle/ruby/1.8/gems/librarian-puppet-0.9.9/vendor/librarian/lib/librarian/action/install.rb:39:in `perform_installation'
    from /opt/boxen/repo/.bundle/ruby/1.8/gems/librarian-puppet-0.9.9/vendor/librarian/lib/librarian/action/install.rb:12:in `run'
    from /opt/boxen/repo/.bundle/ruby/1.8/gems/librarian-puppet-0.9.9/vendor/librarian/lib/librarian/cli.rb:157:in `install!'
    from /opt/boxen/repo/.bundle/ruby/1.8/gems/librarian-puppet-0.9.9/lib/librarian/puppet/cli.rb:64:in `install'
    from /opt/boxen/repo/.bundle/ruby/1.8/gems/thor-0.18.1/lib/thor/command.rb:27:in `__send__'
    from /opt/boxen/repo/.bundle/ruby/1.8/gems/thor-0.18.1/lib/thor/command.rb:27:in `run'
    from /opt/boxen/repo/.bundle/ruby/1.8/gems/thor-0.18.1/lib/thor/invocation.rb:120:in `invoke_command'
    from /opt/boxen/repo/.bundle/ruby/1.8/gems/thor-0.18.1/lib/thor.rb:363:in `dispatch'
    from /opt/boxen/repo/.bundle/ruby/1.8/gems/thor-0.18.1/lib/thor/base.rb:439:in `start'
    from /opt/boxen/repo/.bundle/ruby/1.8/gems/librarian-puppet-0.9.9/vendor/librarian/lib/librarian/cli.rb:29:in `bin!'
    from /opt/boxen/repo/.bundle/ruby/1.8/gems/librarian-puppet-0.9.9/bin/librarian-puppet:9
    from /opt/boxen/repo/bin/librarian-puppet:16:in `load'
    from /opt/boxen/repo/bin/librarian-puppet:16
Can't run Puppet, fetching dependencies with librarian failed.

Any help is very welcomed... thnks

Post openssl fix ruby 2.1.0 -- dyld: Library not loaded: /opt/boxen/homebrew/lib/libgmp.10.dylib

Getting this for Ruby 2.1.0 install after upgrading to 7.3.0:

Notice: /Stage[main]//Node[default]/Ruby::Version[2.1.0]/Exec[ruby-install-2.1.0]/returns: executed successfully
dyld: Library not loaded: /opt/boxen/homebrew/lib/libgmp.10.dylib
  Referenced from: /opt/boxen/rbenv/versions/2.1.0/bin/ruby
  Reason: image not found
dyld: Library not loaded: /opt/boxen/homebrew/lib/libgmp.10.dylib
  Referenced from: /opt/boxen/rbenv/versions/2.1.0/bin/ruby
  Reason: image not found
Notice: /Stage[main]//Node[default]/Ruby::Version[2.1.0]/Ruby::Gem[bundler for 2.1.0]/Rbenv_gem[bundler for 2.1.0]/ensure: created

/opt/boxen/rbenv/libexec/../completions/rbenv.bash:16: command not found: complete

Lately iterm2 + zsh + boxen ruby combo has been seving me quite well, but somehow this error started appearing when I open a new tab. I found out that someone in rbenv also reported this

rbenv/rbenv#239

The solution is posted in the response.
I figured that maybe boxen when loading rbenv in env.d, should maybe reflect this change to work better for zsh?

I propose to change in env.d/rbenv.sh from
eval "$(rbenv init -)"
to
if which rbenv > /dev/null; then eval "$(rbenv init - zsh)"; fi

Build aliases listed in hiera config not found by ruby-build

When using ruby::version { '1.9.3': } I get an error saying that ruby-build cannot find the definition for 1.9.3-p545. This is aliased in common.yaml. It worked at one point, as I have a machine that had 1.9.3-p545 installed, but a fresh install fails.

I also uninstalled 1.9.3-p545 from the machine that had it, and I began to see the error on that machine as well. Note that other versions install without issue.

Here's a pastebin of my boxen log: http://pastebin.com/QSu8LkwC

Using puppet-ruby 7.3.0

rbenv global version not set

After declaring the global version in the hiera/common.yaml file, I still get the global version defined to system

hiera/common.yaml

ruby::global::version: "2.1.0"

I still get

$ cd ~
$ rbenv version
system (set by /opt/boxen/rbenv/version)

Whereas all the ruby versions I want are available

$ rbenv versions
* system (set by /opt/boxen/rbenv/version)
  1.9.3
  1.9.3-p545
  2.0.0
  2.0.0-p353
  2.1.0

I believe there is something going wrong with the hiera global definition, don't you think ?

rbenv_vars plugin approach

@wfarr I was working on adding the rbenv_vars to this module, may be as an opt-it option. Something like this

ruby::rbenv { 'plugins':
  rbenv_vars => true
}

But I really don't know if this plugins should be in the puppet-ruby module, may be there should be a specific module for rbenv_vars.

What do you think about that?

ruby_gem fails `undefined method map` error

Tried installing a gem:

puppet
  ruby_gem { "mailcatcher for $dabo_ruby_version":
    gem       => 'mailcatcher',
    ruby_version      => $global_ruby_version,
    require   => Ruby_Gem["bundler for all rubies"],
  }

And got this error. It's happened with other gems too. The error is inconsistent; sometimes ruby_gem runs without issues.

Error: Could not set 'present' on ensure: undefined method `map' for nil:NilClass at 147:/opt/boxen/repo/modules/projects/manifests/my_project.pp
Error: Could not set 'present' on ensure: undefined method `map' for nil:NilClass at 147:/opt/boxen/repo/modules/projects/manifests/my_project.pp
Wrapped exception:
undefined method `map' for nil:NilClass
Error: /Stage[main]/Projects::My_project/Ruby_gem[mailcatcher for 2.0.0-p353]/ensure: change from absent to present failed: Could not set 'present' on ensure: undefined method `map' for nil:NilClass at 147:/opt/boxen/repo/modules/projects/manifests/my_project.ppp

Installing ruby fails due to 'Remote branch not found when trying to clone ruby-build'

When trying to do a fresh install of boxen with the follow:

boxen 2.1.0
ruby 3.6.0
hombrew 1.1.2
git 1.2.2
hub 1.0.0

The ruby-build plugin fails which cause all of the following ruby installs to fail. I'm getting the following error:
Error: Execution of '/opt/boxen/homebrew/bin/git clone -b v20130408 https://github.com/sstephenson/ruby-build /opt/boxen/rbenv/plugins/ruby-build' returned 128: Cloning into '/opt/boxen/rbenv/plugins/ruby-build'...
fatal: Remote branch v20130408 not found in upstream origin
Unexpected end of command stream

Although if I run '/opt/boxen/homebrew/bin/git clone -b v20130408 https://github.com/sstephenson/ruby-build /opt/boxen/rbenv/plugins/ruby-build' from the command line it works fine and then allows boxen to continue installing ruby.

Invalid resource type ruby::plugin

When I try to include an rbenv plugin like this (from the README):

    ruby::plugin { 'rbenv-vars':
        version => 'v1.2.0',
        source  => 'sstephenson/rbenv-vars'
    }

I get the following error:
Error: Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type ruby::plugin at /opt/boxen/repo/manifests/site.pp:140 on node lynns-macbook-pro.local

Plugin fires notice on every run

I believe this is actually a problem with boxen/puppet-repository but I decided to put it here as well since this is where I ran into it.

There are rbenv plugins which do not have version tags associated with them and therefore, one must specify the branch or SHA which one would like to use.

Unfortunately, the repository module doesn't play well with that.

Example:

ruby::plugin { 'rbenv-sentience':
  version => 'master',
  source  => 'tpope/rbenv-sentience',
}

or

ruby::plugin { 'rbenv-sentience':
  version => '9e491ff7e5c3ec510be46e181c4831e32316c951',
  source  => 'tpope/rbenv-sentience',
}

Cause something similar to:

Notice: /Stage[main]/Myorg::Development::Ruby/Ruby::Plugin[rbenv-sentience]/Exec[ensure-rbenv-sentience-version-9e491ff7e5c3ec510be46e181c4831e32316c951]/returns: executed successfully

on every run.

I mentioned in boxen/puppet-repository#9 about puppetlabs/puppetlabs-vcsrepo. Using this module instead, seems to do the right thing and does not require and ensure-some-thing-checks-out-properly. You can specify a SHA, a tag or a branch. If you specify a branch and the branch is updated, your local repository will also be updated.

Of course I don't know the full history behind the puppet-repository nor the ensure calls that seem to be all over the place so feel free to tell me I'm wrong. 😄

ruby-build through boxen script fails to build 2.1.1

Tried to install Boxen on a fresh OS X 10.9 system with Xcode CLT 5.1.0.0.1.1396320587.

When I rbenv install 2.1.1 from the command line, it works. Running through boxen generates this error, complaining that /opt/X11/lib doesn't exist (it doesn't).

Debug: Executing '/opt/boxen/ruby-build/bin/ruby-build 2.1.1 /opt/rubies/2.1.1'
Error: install failed with a crazy error: Execution of '/opt/boxen/ruby-build/bin/ruby-build 2.1.1 /opt/rubies/2.1.1' returned 1: Installing yaml-0.1.6...
Installed yaml-0.1.6 to /opt/rubies/2.1.1

Installing openssl-1.0.1g...
Installed openssl-1.0.1g to /opt/rubies/2.1.1

Installing ruby-2.1.1...
mkdir: /opt/X11/lib: Permission denied

BUILD FAILED

rbenv plungins support in 8.0

In the braking changes sections it says rbenv plugin support is gone but in the usage section there is and example of a rbenv plugin. Does the 8.0 version of this module still support the installation of rbenv-vars this way? or is something that should be removed from the readme?

# Installing rbenv plugin
ruby::plugin { 'rbenv-vars':
  ensure => 'v1.2.0',
  source  => 'sstephenson/rbenv-vars'
}

Building with options...

This is probably a pretty rare edge case, but I need a 32 bit version of ruby-1.9.2-p290

I couldn't figure out how to do it via Puppet, so for now I'm using the following steps gleamed from online:

wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.gz 
tar -xzf ruby-1.9.2-p290.tar.gz
cd ruby-1.9.2-p290 
autoconf 
./configure --disable-pthread --with-opt-dir=/opt/boxen/rbenv/versions/ruby-1.9.2-p290_32bit --with-arch=i386 --prefix=/opt/boxen/rbenv/versions/ruby-1.9.2-p290_32bit 
make 
make install
cd /project/foo
rbenv local ruby-1.9.2-p290

From my understanding of these files, if I make a new 1.9.2-p290_32bit.pp file and inside, do something like this:

# Installs ruby 1.9.2-p290_32 version via rbenv.
#
# Usage:
#
#     include ruby::1_9_2_p290_32
class ruby::1_9_2_p290 {
  ruby::version { '1.9.2-p290_32':
    cc      => '/usr/local/bin/gcc-4.2',
    conf_opts = ['--disable-pthread', '--with-arch=i386']
  }
}

Is that right? And if so, is it the kind of thing you'd accept to the official repo or is it uncommon enough we'd keep it in our fork?

Thanks 👍

Can't update rbenv repository due to untracked files.

While I've not managed to successfully use config/hiera.yaml to change the "ruby::rbenv_version" to "master" or "origin/master". If I do a "git reset --hard origin/master" and then run boxen it blows up with the following errors from puppet-ruby

Puppet (err): Repository[/opt/boxen/rbenv] tree is dirty and force is false: cannot sync resource!
/Stage[main]/Ruby/Repository[/opt/boxen/rbenv]/ensure (err): change from 783618b89cb80b74f1daf03679081dd1233f49eb to v0.4.0 failed: Repository[/opt/boxen/rbenv] tree is dirty and force is false: cannot sync resource!
/Stage[main]/Ruby/File[/opt/boxen/rbenv/default-gems] (notice): Dependency Repository[/opt/boxen/rbenv] has failures: true
/Stage[main]/Ruby/File[/opt/boxen/rbenv/default-gems] (warning): Skipping because of failed dependencies
/Stage[main]/Ruby/File[/opt/boxen/rbenv/versions] (notice): Dependency Repository[/opt/boxen/rbenv] has failures: true
/Stage[main]/Ruby/File[/opt/boxen/rbenv/versions] (warning): Skipping because of failed dependencies
/Stage[main]/Ruby/File[/opt/boxen/rbenv/rbenv.d] (notice): Dependency Repository[/opt/boxen/rbenv] has failures: true
/Stage[main]/Ruby/File[/opt/boxen/rbenv/rbenv.d] (warning): Skipping because of failed dependencies
/Stage[main]/Ruby/File[/opt/boxen/rbenv/rbenv.d/install] (notice): Dependency Repository[/opt/boxen/rbenv] has failures: true
/Stage[main]/Ruby/File[/opt/boxen/rbenv/rbenv.d/install] (warning): Skipping because of failed dependencies
/Stage[main]/Ruby/File[/opt/boxen/rbenv/rbenv.d/install/00_try_to_download_ruby_version.bash] (notice): Dependency Repository[/opt/boxen/rbenv] has failures: true
/Stage[main]/Ruby/File[/opt/boxen/rbenv/rbenv.d/install/00_try_to_download_ruby_version.bash] (warning): Skipping because of failed dependencies
/Stage[main]/Ruby/File[/opt/boxen/rbenv/shims] (notice): Dependency Repository[/opt/boxen/rbenv] has failures: true
/Stage[main]/Ruby/File[/opt/boxen/rbenv/shims] (warning): Skipping because of failed dependencies
/Stage[main]/Ruby/File[/opt/boxen/rbenv/plugins] (notice): Dependency Repository[/opt/boxen/rbenv] has failures: true
/Stage[main]/Ruby/File[/opt/boxen/rbenv/plugins] (warning): Skipping because of failed dependencies
/Stage[main]/Ruby/Ruby::Plugin[rbenv-default-gems]/Repository[/opt/boxen/rbenv/plugins/rbenv-default-gems] (notice): Dependency Repository[/opt/boxen/rbenv] has failures: true
/Stage[main]/Ruby/Ruby::Plugin[rbenv-default-gems]/Repository[/opt/boxen/rbenv/plugins/rbenv-default-gems] (warning): Skipping because of failed dependencies
/Stage[main]/Ruby/Ruby::Plugin[rbenv-gem-rehash]/Repository[/opt/boxen/rbenv/plugins/rbenv-gem-rehash] (notice): Dependency Repository[/opt/boxen/rbenv] has failures: true
/Stage[main]/Ruby/Ruby::Plugin[rbenv-gem-rehash]/Repository[/opt/boxen/rbenv/plugins/rbenv-gem-rehash] (warning): Skipping because of failed dependencies
/Stage[main]/Ruby/Ruby::Plugin[ruby-build]/Repository[/opt/boxen/rbenv/plugins/ruby-build] (notice): Dependency Repository[/opt/boxen/rbenv] has failures: true
/Stage[main]/Ruby/Ruby::Plugin[ruby-build]/Repository[/opt/boxen/rbenv/plugins/ruby-build] (warning): Skipping because of failed dependencies
/Stage[main]//Node[default]/Ruby::Version[2.0.0]/Ruby::Version[2.0.0-p353]/Exec[ruby-install-2.0.0-p353] (notice): Dependency Repository[/opt/boxen/rbenv] has failures: true
/Stage[main]//Node[default]/Ruby::Version[2.0.0]/Ruby::Version[2.0.0-p353]/Exec[ruby-install-2.0.0-p353] (warning): Skipping because of failed dependencies
/Stage[main]//Node[default]/Ruby::Version[2.0.0]/Ruby::Version[2.0.0-p353]/Ruby::Gem[bundler for 2.0.0-p353]/Rbenv_gem[bundler for 2.0.0-p353] (notice): Dependency Repository[/opt/boxen/rbenv] has failures: true
/Stage[main]//Node[default]/Ruby::Version[2.0.0]/Ruby::Version[2.0.0-p353]/Ruby::Gem[bundler for 2.0.0-p353]/Rbenv_gem[bundler for 2.0.0-p353] (warning): Skipping because of failed dependencies
/Stage[main]//Node[default]/Ruby::Version[2.0.0]/File[/opt/boxen/rbenv/versions/2.0.0] (notice): Dependency Repository[/opt/boxen/rbenv] has failures: true
/Stage[main]//Node[default]/Ruby::Version[2.0.0]/File[/opt/boxen/rbenv/versions/2.0.0] (warning): Skipping because of failed dependencies

the issue seems to stem from puppet-repository which will refuse to update a repository unless there is nothing in the "git status --porcelain" output. While this is obviously a good thing, the presence of

  • default-gems
  • rbenv.d

in the rbenv directory cause this command to return the presence of two untracked items. One could change the gitignore file so that they aren't tracked anymore, but gitgnore is tracked so results in a dirty tree as well.

I don't know whether the two items can be moved outside the rbenv directory, or if I should possibly raising an issue with puppet-repository suggesting that they ignore untracked files when trying to "ensure_revision".

Installed JRuby 1.7.11 with Process.kill throws NotImplementedError

Not sure if this entirely puppet-ruby related or not but after installing jruby-1.7.11 and running rails s in a project I get the following:
NotImplementedError: kill unsupported or native support failed to load

This seems to be used by Process.kill in the rack/server.rb It can be reproduced by running.

irb(main):001:0> Process.kill(0, 92013) NotImplementedError: kill unsupported or native support failed to load from org/jruby/RubyProcess.java:976:in 'kill' from org/jruby/RubyProcess.java:886:in 'kill' from (irb):1:in 'evaluate' from org/jruby/RubyKernel.java:1121:in 'eval' from org/jruby/RubyKernel.java:1521:in 'loop' from org/jruby/RubyKernel.java:1284:in 'catch' from org/jruby/RubyKernel.java:1284:in 'catch' from /opt/boxen/rbenv/versions/jruby-1.7.11/bin/irb:13:in '(root)'

Perhaps this is caused by the precompiled tar from S3 not having compiled w/ the right flags? Is there a way to tell ruby-build to not use the precompiled tar?

current-ruby not a valid identifier

I'm not sure why/when this broke. I'm in the process of upgrading puppet-ruby from 7.2.4 to 8.1.2. When I run the boxen command, I get this output:

Notice: /Stage[main]/Projects::Icurio2/Exec[bundle install icurio2]/returns: /opt/boxen/env.d/30_ruby.sh: line 17: `current-ruby': not a valid identifier
Error: env -i sh -c 'source /opt/boxen/env.sh && RBENV_VERSION=2.0.0-p451 bundle install --path vendor' returned 2 instead of one of [0]
Error: /Stage[main]/Projects::Icurio2/Exec[bundle install icurio2]/returns: change from notrun to 0 failed: env -i sh -c 'source /opt/boxen/env.sh && RBENV_VERSION=2.0.0-p451 bundle install --path vendor' returned 2 instead of one of [0]

Icurio2 is one of my rails projects. I'm not sure how to proceed on this.

Replace rbenv module

With the 0.4.0 release, this module officially kills the rbenv module entirely and takes over all its responsibilities. I recommend upgrading your boxen setups to remove the rbenv module, upgrade to 0.4.0 of puppet-ruby, and replace all references to rbenv with their new ruby counterparts.

List of official changes between 0.3.1 and 0.4.0:

  • manage rbenv
  • manage ruby-build
  • rename ruby to ruby::version
  • add new ruby class to pull in config and reps
  • switch ruby::local to generate .ruby-version files and clean up .rbenv-version files
  • remove custom definitions hacks for now

/cc @boxen/early-testers-non-hubbers

How to remove an old GEM PATH?

I upgraded puppet-ruby from 6.0.0 to 6.0.1. A new Ruby 1.9.3 version was installed, but the gem path for the older Ruby, which has since been uninstalled, persists.

  • Old Ruby, now uninstalled: 1.9.3-p429
  • New Ruby: 1.9.3-p448

gem env gemdir returns the right gem path, but the old Ruby remains in my gem path:

# gem env gemdir
/opt/boxen/rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1
# gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.23
  - RUBY VERSION: 1.9.3 (2013-06-27 patchlevel 448) [x86_64-darwin12.4.1]
  - INSTALLATION DIRECTORY: /opt/boxen/rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1
  - RUBY EXECUTABLE: /opt/boxen/rbenv/versions/1.9.3-p448/bin/ruby
  - EXECUTABLE DIRECTORY: /opt/boxen/rbenv/versions/1.9.3-p448/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-12
  - GEM PATHS:
     - /opt/boxen/rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1
     - /opt/boxen/rbenv/versions/1.9.3-p429/lib/ruby/gems/1.9.1
     - /opt/boxen/rbenv/plugins/rbenv-gem-rehash
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--no-ri --no-rdoc"
  - REMOTE SOURCES:
     - http://rubygems.org/

How do I remove old Ruby gem path? Is Boxen doing this (assuming so but maybe I'm wrong)?

As mentioned, I've uninstalled the old ruby through rbenv, so the directory is no longer there, but trying to track down where/why it is still being set in GEM PATHS.

Error: Unknown function join_keys_to_values

I just tried to upgrade puppet-ruby, but now whenever I try to include anything from it in my manifests/site.pp file I get the following error:

Error: Unknown function join_keys_to_values at /opt/boxen/repo/shared/ruby/manifests/version.pp:37 on node lynns-macbook-pro.local

defaults gems are not working

Every time I install a new ruby version I have to install bundler manually. So seems the default-gems plugin is not working.

Installing rubies that require gcc-4.2 fails due to PATH issues

One of the default rubies for boxen is 1.9.2-p320, which, as specified in Darwin.yaml, requires gcc-4.2 to get built properly. I've configured boxen to install gcc-4.2, but it's not on the path at the time that boxen attempts to build ruby.

The specific error is:

gcc-4.2: command not found

Even though boxen sets up the default Exec path to include the homebrew bin dir (where the gcc-4.2 executable ends up getting installed), execute doesn't seem to grab that default path, so it never sees the gcc-4.2 executable?

Any suggestions here? Let me know if you need more information / if this makes any sense.

rubygems provider isn't working correctly

EG.

Info: Ruby::Gem[rbenv-autohash for 1.8.7-p358]: Starting to evaluate the resource
Info: Ruby::Gem[rbenv-autohash for 1.8.7-p358]: Evaluated in 0.00 seconds
Info: /Stage[main]/Ruby::1-8-7-p358/Ruby[1.8.7-p358]/Ruby::Gem[rbenv-autohash for 1.8.7-p358]/Rbenv_gem[rbenv-autohash for 1.8.7-p358]: Starting to evaluate the resource
Debug: Executing '/opt/boxen/rbenv/shims/gem env gemdir'
Debug: Executing '/opt/boxen/rbenv/shims/gem install 'rbenv-autohash' -v '>= 0''
/Stage[main]/Ruby::1-8-7-p358/Ruby[1.8.7-p358]/Ruby::Gem[rbenv-autohash for 1.8.7-p358]/Rbenv_gem[rbenv-autohash for 1.8.7-p358]/ensure: created
Debug: /Stage[main]/Ruby::1-8-7-p358/Ruby[1.8.7-p358]/Ruby::Gem[rbenv-autohash for 1.8.7-p358]/Rbenv_gem[rbenv-autohash for 1.8.7-p358]: The container Ruby::Gem[rbenv-autohash for 1.8.7-p358] will propagate my refresh event
Info: /Stage[main]/Ruby::1-8-7-p358/Ruby[1.8.7-p358]/Ruby::Gem[rbenv-autohash for 1.8.7-p358]/Rbenv_gem[rbenv-autohash for 1.8.7-p358]: Evaluated in 0.03 seconds
Info: Ruby::Gem[rbenv-autohash for 1.8.7-p358]: Starting to evaluate the resource
Debug: Ruby::Gem[rbenv-autohash for 1.8.7-p358]: The container Ruby[1.8.7-p358] will propagate my refresh event

Appears to be env related, somehow.

@rodjek has tried a few fixes so far with no luck.

REE timeout.rb:60: [BUG] Segmentation fault

I use puppet-ruby version 7.1.6, I install REE got ruby-build's no 488 rbenv/ruby-build#488 Segmentation fault.

Bellow the manifest is working on my Mavericks.

  package { 'apple-gcc42': }
  ruby::version { 'ree-1.8.7-2012.02':
    env => {
        'CC' => "${boxen_home}/homebrew/bin/gcc-4.2",
        'CFLAGS'=> '-O2 -fno-tree-dce -fno-optimize-sibling-calls',
    },
  }

hiera default configuration add CFLGAS?

Thanks you.

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

After installing ruby with boxen I cannot run gem install when there are gem that compile with native extensions.

I'm trying to run bundle install in a puppet module based on the puppet-template but I get an error trying to install the json gem

I think this is because I don't have ruby-dev, there is a way to add the development tools to/with the puppet-ruby module

thks

Cannot configure global/gem like show in the README

I'm a ruby noob & only use 2 or 3 gems.
Here is what I've in my personal manifest

  class { 'ruby::global':
    version => '2.0.0'
  }
  ruby::gem { "compass for ${version}":
    gem     => 'compass',
    ruby    => $version
  }
  ruby::gem { "jekyll for ${version}":
    gem     => 'jekyll',
    ruby    => $version
  }

WHen I run that, I get the following error

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /Library/Ruby/Gems/1.8 directory.

And notice seems weird since I don't the the ${version} number.
See the [jekyll for ].

Notice: /Stage[main]/People::Moox/Ruby::Gem[jekyll for ]/Rbenv_gem[jekyll for ]/ensure: created

Also,

❯ ruby --version
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

Am I supposed to get global version set to 2.0.0 with the lines above ?

aliases on 2.1+ rubies

Does it has any sense to have aliases now that the patch level is not used?

for examples

ruby::version::alias:
  2.1: 2.1.2

unable to install system gems

@dgoodlad

Error: /Stage[main]/Nginx/Ruby_gem[passenger-system]/ensure: change from absent to present failed: Execution of '/opt/rubies/system/bin/gem install 'passenger' --version '4.0.33' --source 'https://rubygems.org/' --no-rdoc --no-ri --verbose' returned 1: ERROR:  While executing gem ... (Errno::ENOENT)
    No such file or directory - /.gem/ruby/2.0.0/cache/passenger-4.0.33.gem

Invalid parameter ruby_version

Trying to use the examples in the docs I get:

Error: Invalid parameter ruby_version at /opt/boxen/repo/manifests/site.pp:88 

When I change to ruby => '*' it says rbenv doesn't have that version.

Main issue seems to be docs are wrong but how would I go about installing, say, pry to all ruby versions?

What happened to precompiled ruby versions?

None of the URLs is not working. For example:

http://s3.amazonaws.com/boxen-downloads/rbenv/10.8/1.9.3-p429.tar.bz2

There were around 15 precompiled versions for 10.9, and even more for 10.8. Now there are none.

Hiera not using pre-defined versions and aliases in data/

I'm using the the 7.1.3 release and have included ripienaar/puppet-module-data in my Puppetfile:

github "module-data", "0.0.1", :repo => "ripienaar/puppet-module-data"

The pre-defined versions and aliases in data/ are not being setup, however. What's missing?

Proper way to install rails with ruby 2.0.0?

Attempting to install rails on ruby 2.0.0 and it complains about a conflict with the rdoc binstub:

rdoc's executable "rdoc" conflicts with /opt/boxen/rbenv/versions/2.0.0-p0/bin/rdoc
Overwrite the executable? [yN]

My manifest looks like:

 ruby::gem { "rails for 2.0.0":
    gem     => 'rails',
    ruby    => '2.0.0',
    version => '~> 3.2.13'
  }

I also tried forcing the install, but exec times out when I try it:

  exec { "rails for 2.0.0":
    command => 'gem install -f rails -v 3.2.13'
  }

Would appreciate any guidance on installing rails with ruby 2.0 and what the best pattern for installing additional gems. Thanks!

ruby::gem should accept optional command line flags

To get the geoip-c working on one of my projects, @nicknovitski and I had to run this command:

sudo gem install geoip-c -- --with-geoip-dir=/opt/boxen/homebrew/opt/geoip

Rather than having to do this, it seems like it would be nice to be able to pass these flags. Something like this:

ruby::gem { 'geoip built from installed c library': 
  gem          => 'geoip-c',
  build_flags => "--with-geoip-dir=#{boxen::brew::opt_dir}/geoip"
}

Are there any reasons this functionality would pose a challenge or be difficult to implement?

Best way to specify default gems to install?

Looking for strategy help. I've been manually specifying gems to install for specific Ruby versions in my manifest. Is there a better way? Guessing I should not touch $RBENV_ROOT/default-gems. Here's a snippet from my manifest:

include ruby::1_9_3
include ruby::2_0_0

  ## Ruby 1.9.3
  ruby::gem { "pry for 1.9.3":
    gem     => 'pry',
    ruby    => '1.9.3',
    version => '~> 0.9.12.2'
  }

puppet-ruby is not installing ruby-build

I'm getting this exception

Error: Could not set 'present' on ensure: undefined method `each' for nil:NilClass at 51:/Users/rafaelmfranca/my_boxen/shared/ruby/manifests/init.pp
Error: Could not set 'present' on ensure: undefined method `each' for nil:NilClass at 51:/Users/rafaelmfranca/my_boxen/shared/ruby/manifests/init.pp
Wrapped exception:
undefined method `each' for nil:NilClass
Error: /Stage[main]/Ruby/Repository[/opt/boxen/rbenv/plugins/ruby-build]/ensure: change from absent to present failed: Could not set 'present' on ensure: undefined method `each' for nil:NilClass at 51:/Users/rafaelmfranca/my_boxen/shared/ruby/manifests/init.pp

This is the relevant Puppetfile

github "boxen", "2.0.0"

github "repository", "2.0.0"
github "dnsmasq",  "1.0.0"
github "gcc",      "1.0.0"
github "git",      "1.2.2"
github "homebrew", "1.1.2"
github "hub",      "1.0.0"
github "nginx",    "1.1.0"
github "nodejs",   "2.0.0"
github "ruby",     "1.0.0"

Also I tested with each version of puppet-ruby

Support for multiple version managers

Challenged by @charliesome, I hacked this module up in a couple of hours last week to support chruby instead of rbenv: https://github.com/dgoodlad/puppet-chruby

I'm considering the idea that this module could wrap multiple version managers:

define ruby::version (
  $ensure = 'present',
  $env = {},
  $version = $name,
  $version_manager = $ruby::version_manager,
) {
  case $version_manager {
    'rbenv': { ruby::rbenv::version { $name: ensure => $ensure, env => $env } }
    'chruby': { ruby::chruby::version { $name: ensure => $ensure, env => $env } }
  }
}

So long as other modules aren't making assumptions about rbenv, rather that they trust this module to manage versions itself, this would work pretty well and let "special" people like @charliesome be a bit happier.

Thoughts, @wfarr ?

Ruby 2.1.2 install fails on Mavericks 10.9.3

I'm running unmodified "example" Puppetfile on a fresh/vanilla Mavericks and get the following error:

Error: install failed with a crazy error: Execution of '/opt/boxen/ruby-build/bin/ruby-build 2.1.2 /opt/rubies/2.1.2' returned 2: ruby-build: definition not found: 2.1.2 ["/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/util/execution.rb:197:in `execute'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/provider.rb:115:in `execute'", "/opt/boxen/repo/shared/ruby/lib/puppet/provider/ruby/rubybuild.rb:66:in `build_ruby'", "/opt/boxen/repo/shared/ruby/lib/puppet/provider/ruby/rubybuild.rb:45:in `create'", "/opt/boxen/repo/shared/ruby/lib/puppet/type/ruby.rb:5:in `block (3 levels) in <top (required)>'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/property.rb:197:in `call_valuemethod'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/property.rb:498:in `set'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/property.rb:581:in `sync'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/transaction/resource_harness.rb:191:in `sync'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/transaction/resource_harness.rb:128:in `sync_if_needed'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/transaction/resource_harness.rb:81:in `perform_changes'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/transaction/resource_harness.rb:20:in `evaluate'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/transaction.rb:174:in `apply'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/transaction.rb:187:in `eval_resource'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/transaction.rb:117:in `call'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/transaction.rb:117:in `block (2 levels) in evaluate'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/util.rb:327:in `block in thinmark'", "/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/benchmark.rb:296:in `realtime'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/util.rb:326:in `thinmark'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/transaction.rb:117:in `block in evaluate'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/graph/relationship_graph.rb:118:in `traverse'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/transaction.rb:108:in `evaluate'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/resource/catalog.rb:167:in `block in apply'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/util/log.rb:149:in `with_destination'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/transaction/report.rb:112:in `as_logging_destination'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/resource/catalog.rb:166:in `apply'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/configurer.rb:117:in `block in apply_catalog'", "/opt/boxen/repo/shared/boxen/lib/puppet/provider/package/hax.rb:12:in `benchmark'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/configurer.rb:116:in `apply_catalog'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/configurer.rb:191:in `run'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/application/apply.rb:288:in `apply_catalog'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/application/apply.rb:228:in `block in main'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/context.rb:64:in `override'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet.rb:234:in `override'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/application/apply.rb:190:in `main'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/application/apply.rb:151:in `run_command'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/application.rb:371:in `block (2 levels) in run'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/application.rb:477:in `plugin_hook'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/application.rb:371:in `block in run'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/util.rb:479:in `exit_on_fail'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/application.rb:371:in `run'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/util/command_line.rb:137:in `run'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/lib/puppet/util/command_line.rb:91:in `execute'", "/opt/boxen/repo/.bundle/ruby/2.0.0/gems/puppet-3.6.1/bin/puppet:4:in `<top (required)>'", "/opt/boxen/repo/bin/puppet:16:in `load'", "/opt/boxen/repo/bin/puppet:16:in `<main>'"]

Kill the version classes

I want to kill all the specific-version classes going forward.

Specific build options for Ruby versions (like this) should be moved into hierdata, both so that users can override with their own settings, and also because the current state of things assumes a whole lot about the environment.

The alias packages can be done in ruby::version (based on hierdata) as a case statement that calls back into ensure_resource('ruby::version', ...) as required.

Mostly this affects boxen/our-boxen, existing Boxen installs, and boxen::project() (via ruby::local()) in particular. We should alter ruby::local() to use ensure_resource('ruby::version', $version, $params), which will allow us to avoid duplicate resource declaration while providing the same API in boxen::project().

/cc @dgoodlad

Add gem install support to optional params

I am developing an app that uses therubyracer gem and thus the libv8 gem.

In most cases the installation of the libv8 gem will have strange output errors (see http://stackoverflow.com/questions/16514758/gem-install-libv8-version-3-11-8-17-on-ruby-windows). The most common solution is to install v8 via homebrew and then install the gem forcing the use of the local installation of v8. This must be done with the -- --with-system-v8 option to the gem install command.

Would it make sense to add this options to the tool?

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.