This repository has been archived by the owner on Jul 10, 2018. It is now read-only.
forked from rubinius/rubinius
/
index.html
353 lines (265 loc) · 12 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
<!DOCTYPE html>
<html>
<head>
<title>Anleitung - Ein Ticket erstellen - Rubinius</title>
<meta content='text/html;charset=utf-8' http-equiv='content-type'>
<meta content='de' http-equiv='content-language'>
<meta content='Rubinius is an implementation of the Ruby programming language. The Rubinius bytecode virtual machine is written in C++. The bytecode compiler is written in pure Ruby. The vast majority of the core library is also written in Ruby, with some supporting primitives that interact with the VM directly.' name='description'>
<meta content='Less Than Three. <3. http://less.thanthree.com' name='author'>
<link href='/' rel='home'>
<link href='/' rel='start'>
<link href='/doc/de/how-to' rel='prev' title='Anleitungen'>
<link href='/doc/de/how-to/write-a-ruby-spec' rel='next' title='Einen Ruby Spec schreiben'>
<!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script><![endif]-->
<script src="/javascripts/jquery-1.3.2.js" type="text/javascript"></script>
<script src="/javascripts/paging_keys.js" type="text/javascript"></script>
<script src="/javascripts/application.js" type="text/javascript"></script>
<style>article, aside, dialog, figure, footer, header, hgroup, menu, nav, section { display: block; }</style>
<link href="/stylesheets/blueprint/screen.css" media="screen" rel="stylesheet" type="text/css" />
<link href="/stylesheets/application.css" media="screen" rel="stylesheet" type="text/css" />
<link href="/stylesheets/blueprint/print.css" media="print" rel="stylesheet" type="text/css" />
<!--[if IE]><link href="/stylesheets/blueprint/ie.css" media="screen" rel="stylesheet" type="text/css" /><![endif]-->
<!--[if IE]><link href="/stylesheets/ie.css" media="screen" rel="stylesheet" type="text/css" /><![endif]-->
<link href="/stylesheets/pygments.css" media="screen" rel="stylesheet" type="text/css" />
</head>
<body>
<div class='container'>
<div class='span-21 doc_menu'>
<header>
<nav>
<ul>
<li><a href="/">Home</a></li>
<li><a id="blog" href="/blog/">Blog</a></li>
<li><a id="documentation" href="/doc/en/">Documentation</a></li>
<li><a href="/projects/">Projects</a></li>
<li><a href="/roadmap/">Roadmap</a></li>
<li><a href="/releases/">Releases</a></li>
</ul>
</nav>
</header>
</div>
<div class='span-3 last'>
<div id='version'>
<a href="/releases/1.2.3">1.2.3</a>
</div>
</div>
</div>
<div class="container languages">
<nav>
<span class="label">Sprachen:</span>
<ul>
<li><a href="/doc/de/"
class="current"
>de</a></li>
<li><a href="/doc/en/"
>en</a></li>
<li><a href="/doc/es/"
>es</a></li>
<li><a href="/doc/ja/"
>ja</a></li>
<li><a href="/doc/pl/"
>pl</a></li>
<li><a href="/doc/ru/"
>ru</a></li>
</ul>
</nav>
</div>
<div class="container doc_page_nav">
<span class="label">Vorherige:</span>
<a href="/doc/de/how-to">Anleitungen</a>
<span class="label">Aufwärts:</span>
<a href="/doc/de/">Inhaltsverzeichnis</a>
<span class="label">Nächste:</span>
<a href="/doc/de/how-to/write-a-ruby-spec">Einen Ruby Spec schreiben</a>
</div>
<div class="container documentation">
<h2>Anleitung - Ein Ticket erstellen</h2>
<p>Den Rubinius Issuetracker findest du hier:
<a href="http://github.com/evanphx/rubinius/issues">http://github.com/evanphx/rubinius/issues</a>.</p>
<p>Damit ein Ticket nützlich ist, sollte es prägnant, fokussiert und umsetzbar
sein. Falls es diese Kriterien nicht erfüllt, wird es vermutlich nur den
Issuetracker zumüllen. Deshalb sollten Tickets mindestens einer der folgenden
Kategorien zugeordnet werden können:</p>
<ol>
<li>Eine vollständige Kommandozeilenhistorie liegt vor, die aufzeigt, wie das
Programm installiert und aufgerufen wurde sowie den Backtrace des
aufgetretenen Fehlers wiedergibt.</li>
<li>Ein kurzes Stück Beispielcode, der das Problem illustriert sowie einein
Kommandozeilenbefehl, um den Code auszuführen.</li>
<li>Ein Patch <strong>inklusive Specs, falls es noch keine äquivalenten
gibt</strong> sowie ein Auszug der darstellt, wie die Specs sich vor und nach
Anwendung des Patches verhalten.</li>
</ol>
<p>Falls die Angelegenheit nicht in eine der oben genannten Kategorien passt,
heißt das nicht, dass sie unwichtig ist. Für Ticket ist es lediglich
unzureichend.</p>
<ol>
<li>
<p>Falls es sich um ein Feature handelt, solltest du in Betracht ziehen, es
auf der Mailingliste zur Diskussion zu stellen. Natürlich kannst du
außerdem auch versuchen es selbst zu implementieren und zu zeigen, warum
und wie dein Feature nützlich sein kann.</p>
</li>
<li>
<p>Falls es sich um eine Bibliothek oder Gem handelt, das nicht korrekt
funktioniert nimm dir etwas Zeit und versuche den Fehler zu reproduzieren
und beschreibe daraufhin die Reproduktion in einem neuen Ticket.</p>
</li>
</ol>
<h2 id="genereller-ablauf-zur-erstellung-eines-tickets">Genereller Ablauf zur Erstellung eines Tickets</h2>
<ol>
<li>
<p>Doppelte Überprüfung.</p>
<ol>
<li>Kompiliere Rubinius komplett neu (‘rake clean; rake’) nachdem du
‘git pull’ ausgeführt hast oder einen frischen Klon des Repositories
erstellt hast.</li>
<li>Lies <a href="/doc/de/getting-started/troubleshooting">Problemlösungen</a>,
um zu sehen, ob eine der dortigen Anleitungen das Problem beheben kann.</li>
<li>Lies <a href="/doc/de/specs/">Specs</a>.</li>
</ol>
</li>
<li>
<p>Gib deinem Ticket einen spezifischen, vorzugsweise kurzen Titel</p>
</li>
<li>
<p>Beschreibe dein Ticket mit angemessenen Tags.</p>
</li>
<li>
<p>Belege dein Ticket mit hinreichend Details bzgl. des Problems.</p>
<ul>
<li>Der Kommandozeilenbefehl, um das Programm auszuführen.</li>
<li>Der Backtrace oder das Ergebnis entgegen dem erwarteten Ergebnis.</li>
<li>Informationen über deinen Rechner und System. <code>uname -a</code> ist
normalerweise gut (falls es irgengwelche “unknown” Felder
gibt, erkläre/beschreibe diese bitte.)</li>
</ul>
</li>
</ol>
<h2 id="zustzliche-instruktionen-fr-tickets-mit-angehngten-patches">Zusätzliche Instruktionen für Tickets mit angehängten Patches</h2>
<ul>
<li>Einfach nur ein paar Specs.</li>
<li>Patches müssen zusätzlich mit Specs versehen sein, es sei denn die Specs
existieren bereits.</li>
<li>Relevante Teile der Spec Ausgabe und der exakte ‘bin/mspec’ Aufruf von dem
existierenden oder hinzugefügten Spec <em>vor</em> der Veränderung.</li>
<li>Die Spec Ausgabe und der exakte ‘bin/mspec’ Aufruf, bei dem ein
erfolgreicher Durchlauf <em>nach</em> der Veränderung zu sehen ist.</li>
<li>Zusätzliche Beschreibungen/Kommentare deines Patches und wie er das
Problem löst. Insbesondere dann, wenn neue Features hinzugefügt wurden,
sollte darauf verwiesen werden, ob der Inhalt des Tickets bereits in
#rubinius (IRC) oder ruby-dev (Mailingliste) diskutiert wurde.</li>
</ul>
<p>Abgesehen von Fällen, bei denen es aus irgendwelchen Gründen unmöglich ist,
sollte ‘git-format-patch’ benutzt werden, um den Patch zu erstellen. Das macht
das Einbringen des Patches wesentlich einfacher und er erhält die korrekte
Zuordnung. Ansonsten sollte ein ‘unified diff’ verwendet werden.</p>
<h2 id="beispiel-fr-das-einreichen-eines-patches">Beispiel für das Einreichen eines Patches</h2>
<p>Angenommen, der folgende Spec existiert und schlägt fehl:</p>
<pre><code>describe "Kernel.format" do
it "is accessible as a module function" do
Kernel.format("%s", "Hallo").should == "Hallo"
end
end
</code></pre>
<ol>
<li>
<p>Ticket Titel:</p>
<p>“[PATCH] No method ‘format’ on Kernel (Module)”</p>
</li>
<li>
<p>Tags:</p>
<p>“patch core spec”</p>
</li>
<li>
<p>Ticket Nachricht (<i>natürlich auf Englisch</i>)</p>
<p>The method ‘format’ is not available as a module function of Kernel.</p>
<pre><code>$ bin/mspec spec/ruby/core/kernel/format_spec.rb
Started
.E
1)
Kernel.format is accessible as a module function ERROR
No method 'format' on Kernel (Module):
</code></pre>
<p>The method ‘format’ already exists but has not been set as a module
function. This patch does so.</p>
<p>After the patch is applied:</p>
<pre><code>$ bin/mspec spec/ruby/core/kernel/format_spec.rb
Started
..
Finished in 0.016031 seconds
2 examples, 2 expectations, 0 failures, 0 errors
</code></pre>
</li>
<li>
<p>Anhang:</p>
</li>
</ol>
<p>Schließlich, packst du deinen Patch in ein Gist und fügst den Link dazu in
dein Ticket ein. Der Vollständigkeit halber siehst du unten den Patch aus dem
obigen Beispiel:</p>
<pre><code>From c61cecce6442347ebbdf1ded7a5c0832c97582c1 Mon Sep 17 00:00:00 2001
From: Brian Ford <bford@engineyard.com>
Date: Sat, 19 Jan 2008 17:48:19 -0800
Subject: [PATCH] Set Kernel#format as a module function.
diff --git a/kernel/core/kernel.rb b/kernel/core/kernel.rb
index 2d2e508..f2a382e 100644
--- a/kernel/core/kernel.rb
+++ b/kernel/core/kernel.rb
@@ -150,6 +150,7 @@ module Kernel
end
alias_method :format, :sprintf
module_function :sprintf
+ module_function :format
module_function :abort
def puts(*a)
</code></pre>
</div>
<div class="container doc_page_nav">
<span class="label">Vorherige:</span>
<a href="/doc/de/how-to">Anleitungen</a>
<span class="label">Aufwärts:</span>
<a href="/doc/de/">Inhaltsverzeichnis</a>
<span class="label">Nächste:</span>
<a href="/doc/de/how-to/write-a-ruby-spec">Einen Ruby Spec schreiben</a>
</div>
<div class="container">
<div id="disqus_thread"></div>
<script type="text/javascript">
var disqus_shortname = 'rubinius';
var disqus_identifier = '/doc/de/how-to/write-a-ticket/';
var disqus_url = 'http://rubini.us/doc/de/how-to/write-a-ticket/';
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
</div>
<footer>
<div class='container'>
<nav>
<ul>
<li><a href="http://twitter.com/rubinius">Follow Rubinius on Twitter</a></li>
<li><a href="http://github.com/evanphx/rubinius">Fork Rubinius on github</a></li>
<li><a href="http://engineyard.com">An Engine Yard project</a></li>
<li id='credit'>
Site design by
<a href="http://less.thanthree.com">Less Than Three</a>
</li>
</ul>
</nav>
</div>
</footer>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-12328521-1");
pageTracker._trackPageview();
} catch(err) {}</script>
</body>
</html>