কমান্ড লাইন থেকে বর্তমান ডিরেক্টরি পরিবেশন


95

কেউ আমাকে একটি ইঙ্গিত দিতে পারে, রুবি দিয়ে কমান্ড লাইন থেকে বর্তমান ডিরেক্টরিটি কীভাবে পরিবেশন করতে পারে? এটি দুর্দান্ত হবে, যদি আমি কিছু সিস্টেম বিস্তৃত কনফিগারেশন (যেমন মাইম-প্রকার) পেতে পারি এবং প্রতিটি ডিরেক্টরি থেকে কেবল এটি চালু করি।

উত্তর:


205

সহজতম উপায় (ধন্যবাদ অ্যারন প্যাটারসন / এন0 কাদা):

ruby -run -e httpd . -p 9090

বিকল্প, আরও জটিল উপায়:

ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 9090, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"

এমনকি প্রথম কমান্ডটি মনে রাখা শক্ত, সুতরাং আমার কাছে এটি কেবল রয়েছে .bashrc:

function serve {
  port="${1:-3000}"
  ruby -run -e httpd . -p $port
}

এটি ডিফল্টরূপে 3000 বন্দরটিতে বর্তমান ডিরেক্টরি পরিবেশন করে তবে আপনি পোর্টটিও নির্দিষ্ট করতে পারেন:

~ $ cd tmp
~/tmp $ serve      # ~/tmp served on port 3000
~/tmp $ cd ../www
~/www $ serve 5000   # ~/www served on port 5000

আপনি যদি উইন্ডোতে থাকেন তবে এটি কি কোনও ফাংশন হিসাবে সেন্টিমিডি বা পাওয়ারশেলের সাথে যুক্ত করা সম্ভব?
কালেব

@ ড্যানিয়েল - যখন আমি আমার ম্যাকটিতে আপনার একটি লাইনার চালাই। আমি এই ত্রুটি বার্তাটি পেয়েছি: অবিচ্ছিন্ন ধ্রুবক INT (নামেরর)। আপনি এটি অন্য প্ল্যাটফর্মে চালাচ্ছেন? তুমি কী জান আমি কীভাবে এড়াতে পারি? তবে আমি যদি এটিকে কোনও ফাইল লিখি তবে Myserver.rb বলুন "রুবি মাইসারভার.আরবি" করুন, এটি ভাল কাজ করে।
টনি জিয়াং

@ টনিজিয়াং আমিও একটি ম্যাক চালাচ্ছি। এটি রুবি ১.৮..7, ১.৯.৩ এবং ২.০.০ দিয়ে চেষ্টা করেছেন এবং তারা সকলেই কাজ করে। অদ্ভুত।
ড্যানিয়েল পেরেজ আলভারেজ

7
রুবি -ডোক.আর.এস.এস.ডি.লাইবি ২.০.০/libdoc/un/rdoc/index.html ruby -run -e httpd . -p 9090দৃষ্টিভঙ্গি দেখানোর জন্য । এটি unরুবি স্ট্যান্ডার্ড লাইব্রেরি থেকে httpd পদ্ধতি কার্যকর করছে , সুতরাং ইউএন প্রয়োজন।
জি-বী

4
@ ডিভিলঝহো যদি আপনি ম্যাক বা লিনাক্স ব্যবহার করে চলেছেন, তবে ব্যাকগ্রাউন্ডে প্রেরণের জন্য কমান্ডের শেষে কেবল একটি অ্যাম্পারস্যান্ড যুক্ত করুন: ruby -run -e httpd . -p 9090 & আপনি যদি এটিকে অগ্রভাগে ফিরিয়ে আনতে চান তবে ব্যবহার করুন fg
ড্যানিয়েল পেরেজ আলভারেজ

22

আমি কমপ্যাক্ট হিসাবে কিছুই দেখিনি

python3 -m http.server

আপনি শেষ পর্যন্ত একটি পোর্ট নম্বর যুক্ত করতে পারেন:

python3 -m http.server 9000

Https://docs.python.org/library/http.server.html দেখুন


এখানে বেশ কমপ্যাক্ট সমাধানগুলির একটি তালিকা রয়েছে: gist.github.com/willurd/5720255 :)
ফেলিক্স

21

হিসাবে হারুন প্যাটারসন এটা টুইট করেছেন আজ আপনি কি করতে পারেন:

ruby -run -e httpd . -p 5000

এবং আপনি যুক্ত করে ঠিক পাশাপাশি বাঁধাই ঠিকানা সেট করতে পারেন -b 127.0.0.1

রুবি ১.৯.২ এবং আরও বেশির সাথে কাজ করে।



4

রুবি রত্ন পরিবেশন করুন

আপনার সিস্টেমে ইনস্টল করতে, চালান gem install serve

একটি ডিরেক্টরি পরিবেশন করতে, কেবল ডিরেক্টরিতে সিডি করুন এবং রান করুন serve

ডিফল্ট পোর্টটি 4000 It এটি ইআরবি, এইচএএমএল, স্লিম এবং এসএএসএসের মতো জিনিসও সরবরাহ করতে পারে।


3

1 লাইনে ওয়েব সার্ভার


আপনি যা চান এটি এটি হতে পারে বা নাও পারে তবে এটি এতটাই দুর্দান্ত যে আমাকে এটি ভাগ করে নিতে হয়েছিল।

আমি অতীতে ফাইল সিস্টেমটি পরিবেশন করতে এটি ব্যবহার করেছি। সম্ভবত আপনি এটিকে সংশোধন করতে পারেন বা কেবল গ্রহণ করতে পারেন যে এটি সমস্ত কিছু করে।

ruby -rsocket -e 's=TCPServer.new(5**5);loop{_=s.accept;_<<"HTTP/1.0 200 OK\r\n\r\n#{File.read(_.gets.split[1])rescue nil}";_.close}'

আমি এটি এখানে খুঁজে পেয়েছি

ক্রিস


3

আপনি sinatraমণিটি ব্যবহার করতে পারেন , যদিও এটি আপনার জন্য কোনও ডিরেক্টরি তালিকা তৈরি করে না, এটি ফাইলগুলি সরবরাহ করে:

require 'sinatra' # gem
set :public_folder, '.'

তারপরে এটি ফাইল হিসাবে চালান, যদি 1.8 এ প্রথমে শীর্ষে 'রুবিজেমস' যুক্ত হয়।

এটি চালানোর পরে ইউআরএল এর মত

http: // লোকালহোস্ট: 4567 / ফাইল_নাম

"./file_name" ফাইলটি সমাধান করা উচিত।

http: // লোকালহোস্ট: 4567 তবে কাজ করবে না, যেহেতু এটি ডিরেক্টরি তালিকা "do" করে না। সেখানে কাজের জন্য https://stackoverflow.com/a/12115019/32453 দেখুন ।



না, আমি বলতে চাই, সিনাত্রা আমাকে ত্রুটি দেয়: সিনাত্রা এই ছদ্মবেশটি জানেন না।
ইভাওয়ানস

@evevanans একরকম আপনার মন্তব্য লক্ষ্য করেছেন [LOL দুঃখিত], এখনই আপডেট হয়েছে।
রজারডপ্যাক

1
python3 -m http.server

বা আপনি ডিফল্ট পোর্ট 8000 ব্যবহার করতে না চাইলে

python3 -m http.server 3333

বা আপনি যদি কেবল লোকালহোস্ট থেকে সংযোগের অনুমতি দিতে চান

python3 -m http.server --bind 127.0.0.1

দস্তাবেজগুলি দেখুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.