Как мне удалить несколько копий драгоценного камня? - PullRequest
0 голосов
/ 09 ноября 2019

Я работал над своей программой и заметил, что она дважды печатала это сообщение об ошибке (и продолжает это делать, несмотря на то, что исправила его в исходном коде):

/Users/karenlee/Desktop/app_academy/Ruby/W5D4/minesweeper/board.rb:5: warning: previous definition of BOMB
 was here
board.rb:5: warning: already initialized constant Board::HIDDEN
/Users/karenlee/Desktop/app_academy/Ruby/W5D4/minesweeper/board.rb:5: warning: previous definition of HIDD
EN was here

Я немного покопалсявокруг, и я нашел это решение: Rails 5.2.0 с консолью Ruby 2.5.1 - `предупреждение:` `уже` инициализировал константу FileUtils :: VERSION

, которая по существу заявляет, чтобы удалить, а затемобновите файл fileutils. Однако, когда я пытаюсь сделать это, я получаю это сообщение об ошибке:

ERROR:  While executing gem ... (Gem::InstallError)
    gem "fileutils" cannot be uninstalled because it is a default gem

Я также взглянул на свой список локальных драгоценных камней и заметил, что у меня есть несколько копий других драгоценных камней, которые мне нужны. чтобы очистить также:

*** LOCAL GEMS ***

bigdecimal (default: 1.4.4, default: 1.3.4)
bundler (2.0.2, default: 1.17.3)
byebug (11.0.1)
cmath (default: 1.0.0)
coderay (1.1.2)
crass (default: 1.0.5)
csv (default: 3.1.2, default: 1.0.0)
date (default: 2.0.0, default: 1.0.0)
dbm (default: 1.0.0)
did_you_mean (default: 1.3.1)
etc (default: 1.0.1, default: 1.0.0)
fcntl (default: 1.0.0)
fiddle (default: 1.0.0)
fileutils (default: 1.3.0, default: 1.0.2)
io-console (default: 0.4.8, default: 0.4.6)
ipaddr (default: 1.2.2, default: 1.2.0)
json (default: 2.2.0, default: 2.1.0)
loofah (default: 2.3.1)
method_source (0.9.2)
minitest (default: 5.13.0)
net-telnet (default: 0.2.0)
nokogiri (default: 1.10.5)
openssl (default: 2.1.2, default: 2.1.0)
power_assert (default: 1.1.5)
pry (0.12.2)
psych (default: 3.1.0, default: 3.0.2)
rake (default: 13.0.0)
rdoc (default: 6.2.0, default: 6.0.1)
scanf (default: 1.0.0)
sdbm (default: 1.0.0)
stringio (default: 0.0.2, default: 0.0.1)
strscan (default: 1.0.3, default: 1.0.0)
test-unit (default: 3.3.4)
tzinfo (default: 2.0.0)
webrick (default: 1.5.0, default: 1.4.2)
zeitwerk (default: 2.2.1)
zlib (default: 1.0.0)

Как бы я удалил гем fileutils (и надеюсь, что процесс похож на другие дубликаты, которые у меня есть)? Если я не могу удалить драгоценные камни по умолчанию, выполнив "gem uninstall gem_name", есть ли другой способ сделать это?

EDIT В соответствии с запросом на комментарий ниже, я продолжу и опубликуюмой файл "board.rb" ниже:

require_relative "tile"

class Board
    attr_reader :grid
    BOMB, HIDDEN = "?", "⬜️"

    # initializes a new board with a grid of spaces
    def initialize
        @grid = self.make_board
    end

    # allows for easy access to positions on the board
    def [](pos)
        row, col = pos
        @grid[row][col]
    end

    # makes a new board (initializes) with the bombs placed
    def make_board
        # see the "new" ruby doc for Arrays; in one form of making a new array,
        # you can use the index as the parameter
        # just using one tile for testing purposes right now
        tile = Tile.new(self, [0, 0])
        # Array.new(9) { | row | Array.new(9) { | col | Tile.new(self, [row, col]) } }
    end

    # randomly places bombs onto the grid
    # def place_bombs
    #     range = (0...@grid.length).to_a
    #     total_bombs = (@grid.length ** 2) / 4
    #     until @grid.flatten.map(&:value).count(BOMB) == total_bombs
    #         @grid[range.sample][range.sample].value = BOMB
    #         # @grid[range.sample][range.sample] = Tile.new(BOMB, self)
    #     end
    # end

    # # checks a position to see if it's a bomb
    # def is_a_bomb?(pos)
    #     row, col = pos
    #     @grid[row][col].value == BOMB
    # end

    # # checks if the entire board of non-bomb tiles are flipped over
    # def won?
    #     safe_tiles = @grid.flatten.select { | tile | tile.value == SAFE }
    #     safe_tiles.all? { | tile | tile.revealed }
    # end

    # # prints out board to the user
    # def render
    #     puts "   #{(0..8).to_a.join("   ")}"
    #     puts
    #     @grid.each.with_index do | row, row_indx |
    #         print "#{row_indx}  "
    #         row.each do | tile |
    #             if tile.revealed
    #                 print "#{tile.value}   "
    #             else  
    #                 print "#{HIDDEN}   "
    #             end
    #         end
    #         puts
    #         puts
    #     end
    # end
end

# board = Board.new
# p require_relative "tile"
# p board.grid

Что касается того, как я запускаю программу, я использую код Visual Studio и запускаю его, просто набрав "ruby board.rb" в командестрока предоставленного экрана терминала внутри Visual Studio.

1 Ответ

0 голосов
/ 09 ноября 2019

На вашем месте я бы удалил все свои драгоценные камни.

gem uninstall -aIx

, затем создал бы новый файл с именем .ruby-version и

ruby-2.6.4

, а другой файл с именем .ruby. -gemset с

app_academy

Затем установите rvm и работайте с gemset и Bundler для управления зависимостями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...