Роман Томченко, таким, что each итерирует не строку, а range (0..text.size), а строка перебирается по индексам
так вот, очевидно, что при длине строки в 5, взять пятый индекс не выйдет, тк 4 - максимум
ну и, соответственно, нужно либо отнимать единицу, либо итерировать range не включающий конец (1...5), либо итерировать саму строку, что предпочтительнее и избавит от подобных ошибок
Роман Томченко, если честно, я не очень понимаю, почему make_key работает именно так как работает, но 0..code.size-1 работает абсолютно правильно, и дело тут абсолютно не в переносе строки, а в том, что происходит выход за размеры строки
Роман Томченко, а можете привести финальный листинг программы? потому что, скорее всего, либо проблема не в переносе строки, либо вы сделали что-то не так. В любом случае просто удалять последний символ без проверки что в нем - решение очень плохое
DigiBeach, вообще звучит так, будто нужна база данных, в данном случае sqllite, которая так же хранится в файле, но в которую можно без проблем писать, из которой можно читать и в которой можно все что угодно помечать как угодно
DigiBeach, а что конкретно сделать? отправить файл через бота? хранить состояние? автоматически отслеживать изменения? тут много вариантов, но гадать никому не хочется, опишите пример json файла, что конкретно и когда делать нужно, в общем нужно больше деталей, ибо сейчас это звучит слишком обще
если бот уже есть, то, я так понимаю, принцип взаимодействия с ним объяснять не нужно?
а что касается отправки файла пользователю, то при приеме сообщения нужно просто читать файл и отправлять его содержимое, да, при таком подходе он будет отправляться полностью. Но можно хранить состояние на сервере и вычислять дельту, например при отправке этот файл сохранять как резерв и при следующей отправке анализировать содержание этих файлов, или хранить в БД тправленные части, но тут уже зависит от формата файла.
А можно пойти далее и с помощью ОС отслеживать изменения файлов и сразу отправлять их пользователю
во-первых нужно открыть C:/Users/Sex/Downloads/www/ssbb/tmp/pids/server.pid и убить процесс, который там написан
во-вторых нужно удалить файл C:/Users/Sex/Downloads/www/ssbb/tmp/pids/server.pid
Если я правильно понял, то вам нужно найти ветвь, где значение будет соответствовать искомому?
В таком случае можно представить структуру в виде дерева заранее неизвестной формы и просто обойти его в глубину
На руби это реализуется достаточно, передаете структуру в функцию, смотрите на тип, если это массив, то в итераторе для каждого снова вызываете эту же функцию
Если это хэш, то опять же идете итератором по значениям
Ну а в остальных случаях сравниваете с искомым значением
звучит так, будто нужно создать триггер, который будет запускаться перед вставкой и прерывать ее при нарушении целостности, больше информации можно найти тут
1) Как устанавливался руби?
2) что в программе
3) работает ли команда gem install bundler?
4) попробуй все перенести прям в корень диска и запустить оттуда
5) руби на Винде это вообще очень плохая идея
6) кидать любой текст картинкой значит проявлять полное неуважение к людям, и не стоит потом удивляться, что не отвечают
В руби есть много вариантов как это сделать, но все они зависят прямо от того, что именно вы пытаетесь сделать
Например, можно простыми аргументами, кваргами, сворачивать аргументы в массив или в хеш. А возможно, стоит и вовсе переписать код на какую-нибудь фабрику. Но это станет понятно только после нормального объяснения, чего вы там пытаетесь добиться
Hacknoob, вот как раз второй вопрос решить просто с помощью балансировщиков типа nginx
А на счёт первого не уверен, что получится отделаться одной базой данных. Ну или как минимум придется схожий код писать в обоих проектах, что тоже не айс
так вот, очевидно, что при длине строки в 5, взять пятый индекс не выйдет, тк 4 - максимум
ну и, соответственно, нужно либо отнимать единицу, либо итерировать range не включающий конец (1...5), либо итерировать саму строку, что предпочтительнее и избавит от подобных ошибок