RubyRBEnv: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
(Link Guide to Rack)
KKeine Bearbeitungszusammenfassung
 
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt)
Zeile 9: Zeile 9:
Konfiguration für einen User mit "/bin/bash" als Shell. Die Umgebungsvariablen werden in ".bash_profile" hinterlegt.
Konfiguration für einen User mit "/bin/bash" als Shell. Die Umgebungsvariablen werden in ".bash_profile" hinterlegt.


    $ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
<syntaxhighlight lang=shell>
    $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
    $ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
    $ source ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
</syntaxhighlight>


Der Befehl
Der Befehl


    $ type rbenv
<syntaxhighlight lang=shell>
type rbenv
</syntaxhighlight>


sollte eine Ausgabe erzeugen, die beginnt: "rbenv is a function"
sollte eine Ausgabe erzeugen, die beginnt: "rbenv is a function"
Zeile 22: Zeile 26:
=== Installation von ruby-build ===
=== Installation von ruby-build ===


    $ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
<syntaxhighlight lang=shell>
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
</syntaxhighlight>


=== Installation von ruby ===
=== Installation von ruby ===
Zeile 28: Zeile 34:
Mit dem Kommando  
Mit dem Kommando  


$ rbenv install --list
<syntaxhighlight lang=shell>
rbenv install --list
</syntaxhighlight>


erhält man eine Liste der aktuell untersützten Ruby-Versionen
erhält man eine Liste der aktuell untersützten Ruby-Versionen
Zeile 34: Zeile 42:
Installation mit (hier Version 3.1.3):
Installation mit (hier Version 3.1.3):


    $ rbenv install 3.1.3
<syntaxhighlight lang=shell>
    $ rbenv global 3.1.3
rbenv install 3.1.3
    $ gem install bundler
rbenv global 3.1.3
    $ rbenv rehash
gem install bundler
rbenv rehash
</syntaxhighlight>


Der Befehl
Der Befehl


    $ ruby -v
<syntaxhighlight lang=shell>
ruby -v
</syntaxhighlight>


liefert die Ausgabe "ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x86_64-linux]"
liefert die Ausgabe "ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x86_64-linux]"
Zeile 55: Zeile 67:
("ru"  kurz für "rackup"):  
("ru"  kurz für "rackup"):  


  # config.ru
<syntaxhighlight lang=ruby line>
 
# config.ru
  class App
 
    def call(env)
class App
      headers = { 'Content-Type' => 'text/html' }
    def call(env)
      response = ['Greetings from Rack!!']
      headers = { 'Content-Type' => 'text/html' }
      [200, headers, response]
      response = ['Greetings from Rack!!']
    end
      [200, headers, response]
  end
    end
 
end
  run App.new


run App.new
</syntaxhighlight>


== Ruby Web Applikation mit Passenger ==
== Sinatra Web Applikation mit Passenger ==


Um eine Beispielanwendung zu installieren, orientieren wir uns an https://github.com/phusion/passenger-ruby-sinatra-demo/tree/end_result
Um eine Beispielanwendung zu installieren, orientieren wir uns an https://github.com/phusion/passenger-ruby-sinatra-demo/tree/end_result
Zeile 76: Zeile 89:
Gemfile:
Gemfile:


<pre>
<syntaxhighlight lang=ruby line>
source 'https://rubygems.org/'
source 'https://rubygems.org/'


Zeile 82: Zeile 95:
gem 'tilt'
gem 'tilt'
gem 'base64', '0.1.1'
gem 'base64', '0.1.1'
</pre>
</syntaxhighlight>


app.rb:
app.rb:


<pre>
<syntaxhighlight lang=ruby line>
require 'sinatra/base'
require 'sinatra/base'
require 'tilt/erb'
require 'tilt/erb'
Zeile 95: Zeile 108:
   end
   end
end
end
</pre>
</syntaxhighlight>


config.ru:
config.ru:


<pre>
<syntaxhighlight lang=ruby line>
require File.absolute_path("app.rb")
require File.absolute_path("app.rb")


run ExampleApp
run ExampleApp
</pre>
</syntaxhighlight>


views/index.erb:
views/index.erb:


<pre>
<syntaxhighlight lang=html line>
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<html>
Zeile 122: Zeile 135:
</body>
</body>
</html>
</html>
</pre>
</syntaxhighlight>


Im Verzeichnis "/home/pacs/xyz00/users/example/doms/example.com/app-ssl/" führen wir aus:
Im Verzeichnis "/home/pacs/xyz00/users/example/doms/example.com/app-ssl/" führen wir aus:


bundle config --local path vendor/bundle
<syntaxhighlight lang=shell line>
bundle install
bundle config --local path vendor/bundle
 
bundle install
</syntaxhighlight>


== Links ==
== Links ==

Aktuelle Version vom 11. Juli 2024, 13:05 Uhr

Eigene Ruby Installation

Oft ist die vorinstallierte Version der Programmiersprache Ruby (die in Debian enthaltene Version) zu alt für die eingesetze Software.

Hier eine kurze Anleitung, mit der man eine eigene Ruby-Umgebung für einen User einrichten kann.

Installation von rbenv

Konfiguration für einen User mit "/bin/bash" als Shell. Die Umgebungsvariablen werden in ".bash_profile" hinterlegt.

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

Der Befehl

type rbenv

sollte eine Ausgabe erzeugen, die beginnt: "rbenv is a function"

Installation von ruby-build

git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

Installation von ruby

Mit dem Kommando

rbenv install --list

erhält man eine Liste der aktuell untersützten Ruby-Versionen

Installation mit (hier Version 3.1.3):

rbenv install 3.1.3
rbenv global 3.1.3
gem install bundler
rbenv rehash

Der Befehl

ruby -v

liefert die Ausgabe "ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x86_64-linux]"

Minimale Web Applikation mit Passenger

Zur Integration der eigenen Ruby-Installation in den Apache erfolgt über das Apache-Modul "Passenger". Vor der Nutzung dieses Moduls bitte unbedingt die Hinweise zur Nutzung beachten.


Für eine minimale Beispielanwendung legen wir eine Datei config.ru mit folgenden Inhalt an ("ru" kurz für "rackup"):

# config.ru

class App
    def call(env)
      headers = { 'Content-Type' => 'text/html' }
      response = ['Greetings from Rack!!']
      [200, headers, response]
    end
end

run App.new

Sinatra Web Applikation mit Passenger

Um eine Beispielanwendung zu installieren, orientieren wir uns an https://github.com/phusion/passenger-ruby-sinatra-demo/tree/end_result

Im Verzeichnis "/home/pacs/xyz00/users/example/doms/example.com/app-ssl/" legen wir folgende Dateien und Verzeichnisse an:

Gemfile:

source 'https://rubygems.org/'

gem 'sinatra'
gem 'tilt'
gem 'base64', '0.1.1'

app.rb:

require 'sinatra/base'
require 'tilt/erb'

class ExampleApp < Sinatra::Base
  get '/' do
    erb :index
  end
end

config.ru:

require File.absolute_path("app.rb")

run ExampleApp

views/index.erb:

<!DOCTYPE html>
<html>
<head><title>Hello</title></head>
<body>
    <h1>Hello world!</h1>
    <% if defined?(PhusionPassenger) %>
      <p>Congratulations, you are running this app in Passenger!<br/>
         You are running Ruby Version: <%= RUBY_VERSION %>
      </p>
    <% else %>
      <p>You are not running this app in Passenger.</p>
    <% end %>
</body>
</html>

Im Verzeichnis "/home/pacs/xyz00/users/example/doms/example.com/app-ssl/" führen wir aus:

bundle config --local path vendor/bundle
bundle install

Links