Difference between revisions of "Package:Ruby"

From Funtoo
Jump to navigation Jump to search
m (almost ironed all the bugs out, possible another commit and it will be ready for production)
m (Changed the command to get the rubygems path since it is deprecated.)
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Ebuild
{{Ebuild
|Summary=Centralized Ruby extension management system
|Summary=Centralized Ruby extension management system
|CatPkg=dev-ruby/rubygems
|CatPkg=dev-lang/ruby
|Maintainer=
|Homepage=https://www.ruby-lang.org
|Homepage=http://rubyforge.org/projects/rubygems/
}}
}}
{{fancywarning|this is a rough draft, and may need revision.}}
Ruby is a programming language with its own package management system to extend the language.


=== Ruby Ruby's way ===
Rubygems is a package management system to extend the ruby language.
Rubygems is a package management system to extend the ruby language.


Gems are packaged wonky in portage so this page will explain how to work with rubygems rather than fight it.  Arch wiki outlines a similar method. 
Gems are packaged in portage and those are good for production server application.  ruby ruby's way is more friendly on the development of rails side.  this will explain how to work with rubygems rather than fight it.  [https://wiki.archlinux.org/index.php/Ruby#RubyGems Arch wiki] outlines a similar method. 
 
https://wiki.archlinux.org/index.php/Ruby#RubyGems


Emerge ruby & rubygems:
Emerge ruby & rubygems:
<console>###i##emerge ruby rubygems</console>
<console>###i## emerge ruby rubygems</console>


Remove bunk gems:
Remove conflicting gems:
<console>###i##emerge -C dev-ruby/rake dev-ruby/racc dev-ruby/json dev-ruby/rdoc</console>
<console>###i## emerge -C dev-ruby/rake dev-ruby/racc dev-ruby/json dev-ruby/rdoc</console>
 
Flush bunk gems bad specs:
<console>###i##mv /usr/local/lib64/ruby/gems/2.1.0/specifications/ /usr/local/lib64/ruby/gems/2.1.0/specifications.backup</console>


Flush conflicting gems bad specs:
<console>###i## mv /usr/local/lib64/ruby/gems/2.1.0/specifications/ /usr/local/lib64/ruby/gems/2.1.0/specifications.backup</console>


Fetch gems via rubygems:
Fetch gems via rubygems:
<console>###i##gem install rdoc json rake racc</console>
<console>###i## gem install rdoc json rake racc</console>


<console>rubygems-update</console>
<console>###i## rubygems-update</console>


update gem system:
update gem system:
<console>###i##update_rubygems
<console>###i## update_rubygems
###i##gem update --system
###i## gem update --system
###i##gem pristine --all
###i## gem pristine --all
</console>
</console>


Now you're ready to use gem to manage gems. The reason this came about is that bundler can't be run with out conflicts.
Now you're ready to use gem to manage gems.
 
To add gems to your path:
{{file|name=$HOME/.bashrc|desc=add gem bin directory to your path|body=
PATH="$(ruby -r rubygems -e 'puts Gem.user_dir')/bin:$PATH"
}}


==ruby on rails==
==ruby on rails==
<console>###i##gem install rails
<console>###i## gem install rails
###i##rails new testproject
###i## rails new testproject
###i##cd testproject
###i## cd testproject
###i##bundle install</console>
###i## bundle install</console>
 
==puma==
puma is a fast web server for ruby on rails.
 
To enable puma in your project:
{{file|name=$HOME/testproject/Gemfile|desc=add puma gem to your rails application|body=
gem 'puma'
}}
 
To pull in puma:
<console>###i## bundle install</console>
 
{{file|name=$HOME/testproject/config/puma.rb|desc=puma configuration file|body=
workers Integer(ENV['PUMA_WORKERS'] {{!}}{{!}} 3)
threads Integer(ENV['MIN_THREADS']  {{!}}{{!}} 1), Integer(ENV['MAX_THREADS'] {{!}}{{!}} 16)
 
preload_app!
 
rackup      DefaultRackup
port        ENV['PORT']    {{!}}{{!}} 3000
environment ENV['RACK_ENV'] {{!}}{{!}} 'development'
 
on_worker_boot do
  # worker specific setup
  ActiveSupport.on_load(:active_record) do
    config = ActiveRecord::Base.configurations[Rails.env] {{!}}{{!}}
                Rails.application.config.database_configuration[Rails.env]
    config['pool'] = ENV['MAX_THREADS'] {{!}}{{!}} 16
    ActiveRecord::Base.establish_connection(config)
  end
end
}}
 
to start puma:
<console>###i## bundle exec puma</console>
or if you added gems bin dir to your path
<console>###i## puma</console>
 
a generic puma init script can be found here
 
https://gist.github.com/666threesixes666/d8bca7f67439763d3e94
 
== media ==
{{#widget:YouTube|playlist=PL1512BD72E7C9FFCA}}


[[Category:Programming language]]
{{EbuildFooter}}
{{EbuildFooter}}

Latest revision as of 05:01, April 9, 2019

Ruby

   Tip

We welcome improvements to this page. To edit this page, Create a Funtoo account. Then log in and then click here to edit this page. See our editing guidelines to becoming a wiki-editing pro.

Ruby is a programming language with its own package management system to extend the language.

Ruby Ruby's way

Rubygems is a package management system to extend the ruby language.

Gems are packaged in portage and those are good for production server application. ruby ruby's way is more friendly on the development of rails side. this will explain how to work with rubygems rather than fight it. Arch wiki outlines a similar method.

Emerge ruby & rubygems:

root # emerge ruby rubygems

Remove conflicting gems:

root # emerge -C dev-ruby/rake dev-ruby/racc dev-ruby/json dev-ruby/rdoc

Flush conflicting gems bad specs:

root # mv /usr/local/lib64/ruby/gems/2.1.0/specifications/ /usr/local/lib64/ruby/gems/2.1.0/specifications.backup

Fetch gems via rubygems:

root # gem install rdoc json rake racc
root # rubygems-update

update gem system:

root # update_rubygems
root # gem update --system
root # gem pristine --all

Now you're ready to use gem to manage gems.

To add gems to your path:

   $HOME/.bashrc - add gem bin directory to your path
PATH="$(ruby -r rubygems -e 'puts Gem.user_dir')/bin:$PATH"

ruby on rails

root # gem install rails
root # rails new testproject
root # cd testproject
root # bundle install

puma

puma is a fast web server for ruby on rails.

To enable puma in your project:

   $HOME/testproject/Gemfile - add puma gem to your rails application
gem 'puma'

To pull in puma:

root # bundle install
   $HOME/testproject/config/puma.rb - puma configuration file
workers Integer(ENV['PUMA_WORKERS'] || 3)
threads Integer(ENV['MIN_THREADS']  || 1), Integer(ENV['MAX_THREADS'] || 16)

preload_app!

rackup      DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'development'

on_worker_boot do
  # worker specific setup
  ActiveSupport.on_load(:active_record) do
    config = ActiveRecord::Base.configurations[Rails.env] ||
                Rails.application.config.database_configuration[Rails.env]
    config['pool'] = ENV['MAX_THREADS'] || 16
    ActiveRecord::Base.establish_connection(config)
  end
end

to start puma:

root # bundle exec puma

or if you added gems bin dir to your path

root # puma

a generic puma init script can be found here

https://gist.github.com/666threesixes666/d8bca7f67439763d3e94

media