我还是Ruby / Rails的新手,大约一个月了,我想确保理解这些看似重要的概念。特别是因为我预计必须使用多个版本。
哪个ruby - 返回一个路径。这是当前还是默认的Ruby解释器?如果我执行.rb文件,那条路径是否正在使用Ruby的版本?
ruby -v - 似乎是当前使用的ruby版本(直接与rvm use ruby-#.#.#
对应)
rails -v - 如果我有多个Rails,它会给我哪些Rails?似乎不是最新版本。
哪些rails - 似乎至少部分对应于你从rails -v获得的Rails版本,因为当我使用rvm时使用ruby - #。#。#并在ruby版本之间进行更改,which rails/rails -v
的输出发生了变化。
您可以设置在执行rake db:seed之类的操作时调用哪些rails版本,还是总是使用与执行rake/rails about
时获得的应用程序相同的Rails版本?
答案 0 :(得分:4)
<form [formGroup]="form" (ngSubmit)="onSubmit()">
<!-- NAME INPUT -->
<div class="form-group">
<div class="input-group" [ngClass]="{'error' : form.controls['name'].errors && (form.controls['name'].touched || submitted)}">
<div class="input-group-prepend">
<span class="input-group-text">
<i class="fas fa-user"></i>
</span>
</div>
<input type="text" class="form-control" formControlName="name" name="name" placeholder="Name">
</div>
<div *ngIf="form.controls['name'].errors && (form.controls['name'].touched || submitted)" class="text-danger">
<div *ngIf="form.controls['name'].errors.required">Name is required.</div>
</div>
</div>
<!-- EMAIL INPUT -->
<div class="form-group">
<div class="input-group" [ngClass]="{'error' : form.controls['email'].errors && (form.controls['email'].touched || submitted)}">
<div class="input-group-prepend">
<span class="input-group-text">
<i class="fas fa-at"></i>
</span>
</div>
<input type="email" class="form-control" formControlName="email" name="_replyto" placeholder="Your email">
</div>
<div *ngIf="form.controls['email'].errors && (form.controls['email'].touched || submitted)" class="text-danger">
<div *ngIf="form.controls['email'].errors.required">Email is required.</div>
<div *ngIf="form.controls['email'].errors.pattern">Please enter valid email address.</div>
</div>
</div>
<!-- SUBJECT INPUT -->
<div class="form-group">
<div class="input-group" [ngClass]="{'error' : form.controls['subject'].errors && (form.controls['subject'].touched || submitted)}">
<div class="input-group-prepend">
<span class="input-group-text">
<i class="fas fa-question-circle"></i>
</span>
</div>
<input type="text" class="form-control" formControlName="subject" name="_subject" placeholder="Subject">
</div>
<div *ngIf="form.controls['subject'].errors && (form.controls['subject'].touched || submitted)" class="text-danger">
<div *ngIf="form.controls['subject'].errors.required">Subject is required.</div>
</div>
</div>
<!-- MESSAGE INPUT -->
<div class="form-group">
<div class="input-group" [ngClass]="{'error' : form.controls['message'].errors && (form.controls['message'].touched || submitted)}">
<div class="input-group-prepend">
<span class="input-group-text">
<i class="fas fa-envelope"></i>
</span>
</div>
<textarea name="message" class="form-control" formControlName="message" rows="3" placeholder="Message"></textarea>
</div>
<div *ngIf="form.controls['message'].errors && (form.controls['message'].touched || submitted)" class="text-danger">
<div *ngIf="form.controls['message'].errors.required">Message is required.</div>
</div>
</div>
<!-- SUBMIT BUTTON -->
<button type="submit" id="submit" class="btn btn-primary float-right">
<span class="fas fa-paper-plane"></span>
Send
</button>
</form>
是一个Unix实用程序,它会搜索您的PATH以查找与您提供的参数匹配的可执行文件,并返回该可执行文件的完整路径。您可以使用路径中包含的任何可执行文件执行此操作,而不仅仅是Ruby或Rails。
另一方面,当您键入which
时,您实际上使用ruby -v
作为命令行参数调用Ruby可执行文件,告诉它返回其版本。您总是会获得当前Ruby的版本。同样适用于Rails。
Ruby和Rails的切换版本取决于您使用的管理工具。对于RVM(Ruby版本管理器),-v
将当前版本的Ruby切换到Ruby 2.5.0(假设您以前安装过它)。对于rbenv,您通常希望编辑项目的use ruby 2.5.0
文件,或者您可以使用.ruby_version
动态切换到Ruby 2.5.0。 Uncle Google提供了有关更加模糊的管理工具的更多信息。