Michael Hartl Вучэбны дапаможнік Кіраўнік 6 - Памылка сінтаксісу

Я працую на падручнік Майкла Hartl ст. Я ў главе 6. Я з'яўляюся да праверкі карыстальніка. Прыведзены ніжэй код з'яўляецца тое, што мне сказалі, каб выкарыстаць, але ён не працуе. Я атрымліваю паведамленне пра памылку сінтаксічная памылка, нечаканы канец уваходнага тэксту, чакаючы keyword_end (SyntaxError) . Я не бачу памылку сінтаксісу. Любыя прапановы?

require 'spec_helper'

describe User do
  before do
    @user = User.new(name: "Example User", email: "[email protected]")
  end
  subject { @user }
  it { should respond_to(:name) }
  it { should respond_to(:email) }
  it { should respond_to(:password_digest) }
  it { should be_valid }

  describe "when name is not present" do
    before { @user.name = " " }
    it { should_not be_valid }
  end
  describe "when email is not present" do
    before { @user.email = " " }
    it { should_not be_valid }
  end 
  describe "when name is too long" do
    before { @user.name = "a" * 51 }
    it { should_not be_valid }
  end
  describe "when email format is invalid" do
    it "should be invalid" do
      addresses = %w[[email protected],com user_at_foo.org [email protected]
                     [email protected]_baz.com [email protected]+baz.com]
      addresses.each do |invalid_address|
        @user.email = invalid_address
        @user.should_not be_valid
      end

  describe "when email format is valid" do
    it "should be valid" do
      addresses = %w[[email protected] [email protected] [email protected] [email protected]]
      addresses.each do |valid_address|
        @user.email = valid_address
        @user.should be_valid
      end

  describe "when email address is already taken" do
    before do
      user_with_same_email = @user.dup
      user_with_same_email.email = @user.email.upcase
      user_with_same_email.save
    end
    it { should_not be_valid }
  end 
end
1
Справядліва @Sergio Tulentsev
дададзена аўтар NM Pennypacker, крыніца
Я выдаліў тэг з пастоў, якія я дадаў яго, але ў мяне няма дазволу на змяненне/выдаленне самага тэга.
дададзена аўтар NM Pennypacker, крыніца
Я выдаліў тэг з пастоў, якія я дадаў яго, але ў мяне няма дазволу на змяненне/выдаленне самага тэга.
дададзена аўтар NM Pennypacker, крыніца
@nickm: Я думаю, што вы павінны спыніць гэтую дзейнасць (даданне тэгаў). Аналагічны тэг абмяркоўваўся на мета , некаторы час таму.
дададзена аўтар Sergio Tulentsev, крыніца
@NickM: і цяпер, магчыма, хутка адмяніць змены, перш чым мета-паведамлення? :)
дададзена аўтар Sergio Tulentsev, крыніца
Вы сапраўды павінны працаваць на фарматаванне кода. Лінейныя рэчы, каб зрабіць іх чытэльнымі і вы зможаце знайсці свой адсутны Перапыніць
дададзена аўтар Jordan Kaye, крыніца

9 адказы

I recommend that you indent your code, that way it'll be much more obvious where end keywords should go (and you'll see immediately that you're missing one). (Hartl does throughout the book.)

Напрыклад:

require 'spec_helper'
describe User do
  before do
    @user = User.new(name: "Example User", email: "[email protected]")
  end
  subject { @user }
  it { should respond_to(:name) }
  it { should respond_to(:email) }
  it { should respond_to(:password_digest) }
  it { should be_valid }
  describe "when name is not present" do
    before { @user.name = " " }
    it { should_not be_valid }
  end
end

Калі водступы не адпавядае дзе-небудзь, <�моцны> ён павінен выскачыць ў вас , то вы будзеце ведаць, што ёсць праблема.

4
дададзена
Вялікі дзякуй...
дададзена аўтар user2415183, крыніца

I recommend that you indent your code, that way it'll be much more obvious where end keywords should go (and you'll see immediately that you're missing one). (Hartl does throughout the book.)

Напрыклад:

require 'spec_helper'
describe User do
  before do
    @user = User.new(name: "Example User", email: "[email protected]")
  end
  subject { @user }
  it { should respond_to(:name) }
  it { should respond_to(:email) }
  it { should respond_to(:password_digest) }
  it { should be_valid }
  describe "when name is not present" do
    before { @user.name = " " }
    it { should_not be_valid }
  end
end

Калі водступы не адпавядае дзе-небудзь, <�моцны> ён павінен выскачыць ў вас , то вы будзеце ведаць, што ёсць праблема.

4
дададзена
Вялікі дзякуй...
дададзена аўтар user2415183, крыніца

I recommend that you indent your code, that way it'll be much more obvious where end keywords should go (and you'll see immediately that you're missing one). (Hartl does throughout the book.)

Напрыклад:

require 'spec_helper'
describe User do
  before do
    @user = User.new(name: "Example User", email: "[email protected]")
  end
  subject { @user }
  it { should respond_to(:name) }
  it { should respond_to(:email) }
  it { should respond_to(:password_digest) }
  it { should be_valid }
  describe "when name is not present" do
    before { @user.name = " " }
    it { should_not be_valid }
  end
end

Калі водступы не адпавядае дзе-небудзь, <�моцны> ён павінен выскачыць ў вас , то вы будзеце ведаць, што ёсць праблема.

4
дададзена
Вялікі дзякуй...
дададзена аўтар user2415183, крыніца
require 'spec_helper'

describe User do
  before do
    @user = User.new(name: "Example User", email: "[email protected]")
  end
  subject { @user }
  it { should respond_to(:name) }
  it { should respond_to(:email) }
  it { should respond_to(:password_digest) }
  it { should be_valid }

  describe "when name is not present" do
    before { @user.name = " " }
    it { should_not be_valid }
  end
  describe "when email is not present" do
    before { @user.email = " " }
    it { should_not be_valid }
  end 
  describe "when name is too long" do
    before { @user.name = "a" * 51 }
    it { should_not be_valid }
  end
  describe "when email format is invalid" do
    it "should be invalid" do
      addresses = %w[[email protected],com user_at_foo.org [email protected]
                     [email protected]_baz.com [email protected]+baz.com]
      addresses.each do |invalid_address|
        @user.email = invalid_address
        @user.should_not be_valid
      end
    end # you've missed it
  end # and this one

  describe "when email format is valid" do
    it "should be valid" do
      addresses = %w[[email protected] [email protected] [email protected] [email protected]]
      addresses.each do |valid_address|
        @user.email = valid_address
        @user.should be_valid
      end
    end #
  end # and two more    

  describe "when email address is already taken" do
    before do
      user_with_same_email = @user.dup
      user_with_same_email.email = @user.email.upcase
      user_with_same_email.save
    end
    it { should_not be_valid }
  end 
end
0
дададзена
require 'spec_helper'

describe User do
  before do
    @user = User.new(name: "Example User", email: "[email protected]")
  end
  subject { @user }
  it { should respond_to(:name) }
  it { should respond_to(:email) }
  it { should respond_to(:password_digest) }
  it { should be_valid }

  describe "when name is not present" do
    before { @user.name = " " }
    it { should_not be_valid }
  end
  describe "when email is not present" do
    before { @user.email = " " }
    it { should_not be_valid }
  end 
  describe "when name is too long" do
    before { @user.name = "a" * 51 }
    it { should_not be_valid }
  end
  describe "when email format is invalid" do
    it "should be invalid" do
      addresses = %w[[email protected],com user_at_foo.org [email protected]
                     [email protected]_baz.com [email protected]+baz.com]
      addresses.each do |invalid_address|
        @user.email = invalid_address
        @user.should_not be_valid
      end
    end # you've missed it
  end # and this one

  describe "when email format is valid" do
    it "should be valid" do
      addresses = %w[[email protected] [email protected] [email protected] [email protected]]
      addresses.each do |valid_address|
        @user.email = valid_address
        @user.should be_valid
      end
    end #
  end # and two more    

  describe "when email address is already taken" do
    before do
      user_with_same_email = @user.dup
      user_with_same_email.email = @user.email.upcase
      user_with_same_email.save
    end
    it { should_not be_valid }
  end 
end
0
дададзена
require 'spec_helper'

describe User do
  before do
    @user = User.new(name: "Example User", email: "[email protected]")
  end
  subject { @user }
  it { should respond_to(:name) }
  it { should respond_to(:email) }
  it { should respond_to(:password_digest) }
  it { should be_valid }

  describe "when name is not present" do
    before { @user.name = " " }
    it { should_not be_valid }
  end
  describe "when email is not present" do
    before { @user.email = " " }
    it { should_not be_valid }
  end 
  describe "when name is too long" do
    before { @user.name = "a" * 51 }
    it { should_not be_valid }
  end
  describe "when email format is invalid" do
    it "should be invalid" do
      addresses = %w[[email protected],com user_at_foo.org [email protected]
                     [email protected]_baz.com [email protected]+baz.com]
      addresses.each do |invalid_address|
        @user.email = invalid_address
        @user.should_not be_valid
      end
    end # you've missed it
  end # and this one

  describe "when email format is valid" do
    it "should be valid" do
      addresses = %w[[email protected] [email protected] [email protected] [email protected]]
      addresses.each do |valid_address|
        @user.email = valid_address
        @user.should be_valid
      end
    end #
  end # and two more    

  describe "when email address is already taken" do
    before do
      user_with_same_email = @user.dup
      user_with_same_email.email = @user.email.upcase
      user_with_same_email.save
    end
    it { should_not be_valid }
  end 
end
0
дададзена

У ruby зрабіць .. канец вызначае блок. Гэта ідзе як:

... do

.. Some Code Here ...

end

Вы павінны водступ свайго кода і лепш глядзець на недастатковай канцы.

Увогуле, яго ўмоўнасць у Рубіне выкарыстоўваць 2 прабелу або сімвал табуляцыі з даўжынёй 2 прабелаў для водступу кода.

0
дададзена
Вялікі дзякуй...
дададзена аўтар user2415183, крыніца

У ruby зрабіць .. канец вызначае блок. Гэта ідзе як:

... do

.. Some Code Here ...

end

Вы павінны водступ свайго кода і лепш глядзець на недастатковай канцы.

Увогуле, яго ўмоўнасць у Рубіне выкарыстоўваць 2 прабелу або сімвал табуляцыі з даўжынёй 2 прабелаў для водступу кода.

0
дададзена
Вялікі дзякуй...
дададзена аўтар user2415183, крыніца

У ruby зрабіць .. канец вызначае блок. Гэта ідзе як:

... do

.. Some Code Here ...

end

Вы павінны водступ свайго кода і лепш глядзець на недастатковай канцы.

Увогуле, яго ўмоўнасць у Рубіне выкарыстоўваць 2 прабелу або сімвал табуляцыі з даўжынёй 2 прабелаў для водступу кода.

0
дададзена
Вялікі дзякуй...
дададзена аўтар user2415183, крыніца